Liferay の導入支援や保守サポートについては、こちらへ
Liferay7の「ログインセキュリティ」に関する情報について、「Liferay Developer Network」サイトから紹介します。
目次
- Liferayのポータルセキュリティ概要
- 認証の概要
- 認可および権限のチェック
- 追加のセキュリティ機能
- セキュア開発の提言
- セキュアな設定と実行の推奨事項
- 参考元サイト
- LiferayのLDAP設定
- LDAPオプション
- 複数LDAPサーバサポート
- LDAPサーバ接続(SSLモード)
- 参考元サイト
- LiferayとOpenAM連携
- OpenAM連携条件
- OpenAM構築
- Liferay側のOpenAM設定
- 参考元サイト
第1回 Liferay7のポータルセキュリティ
Liferay7の「ポータルセキュリティ概要」について紹介します。
Liferayのポータルセキュリティ概要
Liferayは、セキュリティ推奨事項「OWASP Top 10 (2013)」および「CWE/SANS Top 25 lists」に従うことにより、既知のサイバー攻撃/セキュリティ脆弱性から、ポータルを保護します。
Liferayのサービスビルダフレームワークは、「SQLインジェクション」「クロスサイトスクリプティング(XSS)」などの攻撃を防ぐように維持されています。
Liferayは、常に、製品セキュリティ向上のための修正が行われています。
- PBKDF2によるパスワード保護
- 二次ブローアップXXE攻撃対策
- ロゼッタFlash脆弱性対策
- 反射ファイルダウンロード対策 など
認証の概要
対応する認証ソリューション
Liferayのユーザー認証は、さまざまな認証ソリューションを利用できます。
- ポートレットサインインフォーム認証—ポータルデータベース、LDAP
- シングルサインオン(SSO)ソリューション—NTLM、CAS、SiteMinder、OpenSSO、OpenID
- SAMLプラグイン
- アプリケーションサーバとのJAASの統合
- HTTPベーシック+ダイジェスト認証(パスワードベース)
- OAuthプラグイン(トークンベース)
- JavaScriptアプリケーション用ポータルセッションベースソリューション
認証カスタマイズ
「ユーザ認証」と「リモートアプリケーション認証」の両方について、Liferay用のカスタマイズが可能です。
開発者は、「カスタムログインポートレット」や「プラグイン」を作成し、デフォルトのログインポートレットを拡張できます。
認可および権限のチェック
「データの不正改竄」または「保護されていないアクセスに対する防止」のために、調整可能な承認層が用意されています。
- リモートIP/HTTPSトランスポートチェック—LiferayのJavaサーブレットへのアクセスを制限
- 拡張可能なアクセス制御ポリシー層—任意のポータルサービス関連の認証チェックを実行
- 拡張可能なロールベース許可フレームワーク—ほぼすべてのエンティティまたはデータに対応
- ポートレットコンテナセキュリティチェック—ポートレットへのアクセス制御
- リモートIPチェック—ポータルリモートAPI認証
- サービスアクセスポリシー—ポータルリモートAPIへのアクセスを制御
追加のセキュリティ機能
カスタムロール
Liferayでは、「カスタムロール」を作成し、「サイト」「チーム」「ユーザーグループ」「組織」に対して割り当てを行えます。
セキュリティプラグイン
Liferay Marketplaceから、さらにセキュリティを向上させるための「セキュリティプラグイン」をダウンロードして適用できます。
追跡用や監査用などの各種プラグインが用意されています。
セキュリティ設定オプション
Liferayのセキュリティオプション設定により、各種調整を行えます。
- ポートレットでのサインインを無効
- Webサーバのアドレス指定
- リダイレクト可能な許可サーバのリスト設定
- アクセス可能ポートレットのリスト設定
- ファイル種類単位でのアップロード/ダウンロード認可 など
セキュア開発の提言
脆弱性チェックツール
Liferayは、コード脆弱性対応をサポートするツールを提供しています。
セキュリティ向上API
セキュリティを強化するためのAPIも用意されています。
- 「HtmlUtil」—クロスサイトスクリプティング対策
- 「HtmlUtilescapeXPath」— XPathインジェクション対策
- 「AuthTokenUtilcheckCSRFToken」—CSRFトークンチェック
- 「FileUtilcreateTempFile*」—ファイルシステム関連
- 「PortalUtilescapeRedirect」—オープンリダイレクト制御
- 「PwdGeneratorgetPassword」—暗号強度の高いパスワード出力
- 「PasswordEncryptorUtil」—強力なパスワードハッシュの検証および作成 など
セキュアな設定と実行の推奨事項
Liferayのデフォルト状態は安全に構築されています。設定によりセキュリティレベルを下げてしまわないような運用が必要です。
配布されるセキュリティパッチを適用し、常に最新の状態にしておくことも重要です。
参考元サイト
第2回 Liferay7のLDAPサポート
Liferayは、ユーザーストアとして「LDAP(Lightweight Directory Access Protocol)」をサポートしています。
「LiferayをLDAPサーバへ接続する方法」「インポート設定」「エクスポート設定」「LDAP構成設定」「セキュリティ設定」などに関する情報を紹介します。
LiferayのLDAP設定
LDAP構成設定は、Liferayのコントロールパネルから行います。
※[コントロールパネル]→[設定]→[インスタンスの設定]→[認証]→[LDAP]
LDAPの有効化
[有効]チェックボックス
LDAP認証を有効化する場合に、このチェックボックスをONにします。
[必須]チェックボックス
さらに、LDAP認証を「必須」にする場合には、このチェックボックスをONにします。
Liferayアカウントを所有するユーザーであっても、LDAPと連携していないユーザーである場合は、ログインできなくなります。
ユーザーデータのインポート/エクスポート
「Liferay」と「LDAPサーバ」の間で、ユーザデータのインポート/エクスポートを行えます。
Liferay導入環境に、すでにLDAPサーバが存在する場合、LDAPサーバからユーザーデータのインポートを行えば、Liferay用のユーザー登録作業が不要です。
インポート有効化
[インポートを有効にする]チェックボックスをONすると、LDAPサーバからのインポートが有効になります。
クラスタ環境においてONにしたままにすると、大量の同期処理が行われてしまうため、注意が必要です。
エクスポート有効化
[エクスポートを有効にする]チェックボックスをONにすると、ユーザーデータへのエキスポートが有効化されます。
Liferay側で更新されたユーザーデータをLDAPサーバにエキスポートすることにより、データが同期されます。
起動時インポート有効化
[起動時にインポートを有効にする]チェックボックスをONにすると、起動時にのみ、インポートが行われます。
LDAPのパスワードポリシー設定
Liferay独自のパスワードポリシーを無効化して、LDAPサーバ側のパスワードポリシーを使用できます。
LDAPオプション
認証方法設定
LDAPの「認証方法」と「パスワード暗号化アルゴリズム」の設定を行えます。
インポート設定
インポート時の「LDAPツリー内の対象範囲指定」を行えます。
複数LDAPサーバサポート
Liferayは、複数のLDAPサーバへの接続をサポートしています。
LDAPサーバ登録/追加
必要な情報を登録して、新規LDAPサーバの追加を行います。
- LDAPサーバ名
- 接続情報—ベースプロバイダURL、ベースDN(LDAPディレクトリのベース識別名)
- LDAP管理者ユーザーID
- LDAP管理者ユーザーパスワード
LDAPサーバ優先度設定
複数のLDAPサーバが登録されている場合、GUI(アップ/ダウンの矢印)で、優先度を設定できます。
LDAPサーバ接続(SSLモード)
SSLモードで稼働するLDAPサーバへの接続もサポートされています。
SSL設定
LiferayとLDAPサーバ間での、「暗号化鍵」と「証明書」を共有するための設定が必要です。
[管理ツール] → [証明機関]にて、設定を行います。対象となる認証機関(LDAPサーバ)に対して、証明書の設定を行います。
「GUIでのウィザード」や「CUIでのコマンド実行」を利用できます。
SSL化の効果
「Liferay」と「LDAPサーバ」間の接続がSSL暗号化されるため、ユーザーデータ保護に対するセキュリティを向上できます。
参考元サイト
第3回 Liferay7のOpenAM連携
「Liferay」と「OpenAM」の連携設定方法について紹介します。
LiferayとOpenAM連携
「OpenAM」とは、オープンソースのシングルサインオンソリューションです。主に、イントラネット内で利用されます。
OpenAMは、Webアプリケーションに対するすべての要求をインターセプトし、Webサーバ(リバースプロキシサーバ)を経由して展開できます。SSOをサポートしていないアプリケーションに対してもSSOを実装できるため、数多く導入されています。
LiferayにはOpenAMと連携するための機能がデフォルトで搭載されています。すでにOpenAMが稼働している環境である場合は、機能追加などを行わずに、すぐに設定を行い利用できます。
OpenAM連携条件
OpenAMは、アプリケーション間の「Cookie」を利用して、シングルサインオン制御を行います。
そのため、「OpenAMサーバ」「Liferayサーバ」「その他のSSOを利用するWebアプリケーションサーバなど」は、すべての同一のドメインに存在する必要があります。
OpenAM構築
OpenAMのインストール先
OpenAMは、独自サーバとして構築することも、Liferayサーバ内に構築することも可能です。
対象サーバに対して、OpenAMインストールファイル(warファイル)を展開し、インストールを行います。
(OpenAM側)管理ユーザー作成
OpenAMのインストールが完了したら、OpenAM内に、「Liferay用管理ユーザー」アカウントを作成します。
Liferay側のOpenAM設定
Liferayに対して、管理ユーザーでログインします。
[コントロールパネル]→[click Configuration]→[Instance Settings]→[Authentication]→[OpenSSO]で、OpenAMの設定を行います。
LiferayのOpenAM構成は、「いずれかのシステムスコープ」または「インスタンス範囲」で適用できます。
OpenAM設定項目
プロパティ名 | プロパティキー | 説明 | タイプ |
---|---|---|---|
使用可能 | enabled | OpenAM認証を有効化する場合に、この項目をONにします。 | boolean |
LDAPからインポート | importFromLDAP | この項目をONにすると、「OpenAMから認証されている」かつ「Liferayに存在していない」ユーザーであった場合、LDAPからユーザーデータがインポートされます。LDAPが有効化されている必要があります。 | boolean |
ログインURL | loginURL | OpenAMサーバのログインページへのURL | String |
ログアウトURL | logoutURL | OpenAMサーバのログアウトページへのURL | String |
サービスURL | serviceURL | サービスが実行されるURL | String |
画面名属性 | screenNameAttr | ユーザーの画面名 | String |
メールアドレス属性 | emailAddressAttr | ユーザーのメールアドレス | String |
ファーストネーム属性 | firstNameAttr | ユーザーのファーストネーム | String |
ラストネーム(姓)属性 | lastNameAttr | ユーザーのラストネーム(姓) | String |