この章では、Identity Manager のセキュリティー機能と、セキュリティー上のリスクを軽減するための手順について詳しく説明します。
次のトピックで、Identity Manager でのシステムセキュリティーの管理について詳細に説明します。
Identity Manager では、次の機能によってセキュリティー上のリスクを軽減します。
アカウントアクセスの即時無効化。Identity Manager では、1 回の操作で組織または個人のアクセス権限を無効にできます。
ログインセッションの制限。現在のログインセッションに制限を設定できます。
アクティブリスク分析。Identity Manager では、活動していないアカウントや疑念のあるパスワードアクティビティーなどのセキュリティー上のリスクを絶えずスキャンします。
総合的なパスワード管理。完全で柔軟なパスワード管理機能により、完全なアクセス制御が実現します。
アクセス行為を監視するための監査とレポート。アクセス行為についての対象情報を提供するあらゆる種類のレポートを実行できます。(レポート機能の詳細については、第 8 章レポートを参照)
管理特権の詳細な制御。Identity Manager では、ユーザーまたは管理者ロールで定義された一定範囲の管理作業に対して単一の機能を割り当てることにより、管理者としての制御能力を付与し管理できます。
サーバーキーの暗号化。Identity Manager では、「タスク」領域でサーバー暗号化キーを作成および管理できます。
また、システムアーキテクチャーによってセキュリティー上のリスクを可能な限り軽減するようにしています。たとえば、一度ログアウトすると、以前にアクセスしたページにブラウザの「戻る」機能を使用してアクセスすることはできません。
デフォルトでは、Identity Manager ユーザーは複数の同時ログインセッションを持つことができます。ただし、システム設定オブジェクトを開き (「Identity Manager 設定オブジェクトの編集」)、security.authn.singleLoginSessionPerApp 設定属性の値を編集して変更すれば、同時セッションをログインアプリケーションごとに 1 つに制限できます。この属性は、ログインアプリケーション名ごとに 1 つの属性を含むオブジェクトです (管理者インタフェース、ユーザーインタフェース、Identity Manager IDE など)。この属性の値を true に変更すると、ユーザーごとに 1 つのログインセッションに制限されます。
制限された場合でも、ユーザーは 2 つ以上のセッションにログインできます。 ただし、アクティブで有効な状態なのは最後にログインしたセッションのみです。ユーザーが無効なセッションでアクションを実行すると、そのユーザーは自動的にセッションからログオフされ、セッションが終了します。
Identity Manager では、複数のレベルでのパスワード管理が可能です。
変更の管理
ユーザーのパスワードを複数の場所から変更 (「ユーザーの編集」、「ユーザーの検索」、または「パスワードの変更」ページ)
リソースを細分化して選択することにより、ユーザーの任意のリソースでパスワードを変更
パスワードリセットの管理
ランダムなパスワードを生成する
パスワードをエンドユーザーまたは管理者に表示する
ユーザーによるパスワードの変更
次のサイトで、エンドユーザーは自己管理機能によりパスワードを変更できる
http://localhost:8080/idm/user
エンドユーザーの環境に適するように自己管理ページをカスタマイズ (任意)
ユーザーによるデータの更新
エンドユーザーが管理するユーザーのスキーマ属性を設定する
ユーザーによるアクセスの復旧
秘密の質問を使用して、自分のパスワードを変更するアクセス権をユーザーに与える
パススルー認証を使用して、いくつかのパスワードのうちの 1 つを使ってアクセス権をユーザーに与える
パスワードポリシー
パスワードパラメータを定義する規則を使用する
パススルー認証を使用して、ユーザーと管理者に 1 つまたは複数の異なるパスワードによるアクセス権を付与します。
Identity Manager は、次の実装によって認証を管理します。
ログインアプリケーション (ログインモジュールグループの集まり)
ログインモジュールグループ (順序づけされた一連のログインモジュール)
ログインモジュール (割り当てられたリソースごとに認証を設定し、認証の成功条件を複数の中から 1 つ指定)
ログインアプリケーションは、ログインモジュールグループの集まりを定義し、さらに、ユーザーが Identity Manager にログインするときに使用する一連のログインモジュールのセットと順序を定義します。各ログインアプリケーションは、1 つ以上のログインモジュールグループから構成されます。
ログイン時に、ログインアプリケーションはログインモジュールグループのセットを確認します。ログインモジュールグループが 1 つだけ設定されている場合は、そのグループが使用され、そこに含まれるログインモジュールはグループに定義された順序で処理されます。ログインアプリケーションに複数のログインモジュールグループが定義されている場合には、Identity Manager が各ログインモジュールに適用されるログイン制約規則をチェックして、処理するグループを決定します。
ログイン制約規則は、ログインモジュールグループに適用されます。ログインアプリケーションのログインモジュールグループの各セットについて、ログイン制約規則を適用できないログインモジュールグループが 1 つだけ存在します。
セットのどのログインモジュールグループを処理するかを決定する際、Identity Manager は最初のログインモジュールグループの制約規則を評価します。評価が成功した場合、Identity Manager はそのログインモジュールグループを処理します。評価が失敗した場合、Identity Manager は各ログインモジュールグループを順番に評価していき、制約規則が成功するか、または制約規則を持たないログインモジュールグループが評価される (そして続いて使用される) まで評価を続けます。
ログインアプリケーションに複数のログインモジュールグループが含まれる場合には、ログイン制約規則を持たないログインモジュールグループをセットの最後の位置に置くようにしてください。
次に示す場所に基づいたログイン制約規則の例では、規則が HTTP ヘッダーからリクエスト側の IP アドレスを取得し、そのアドレスが 192.168 ネットワーク上にあるかどうかをチェックします。IP アドレスに 192.168. が検出されると、規則は true の値を返し、そのログインモジュールグループが選択されます。
<Rule authType=’LoginConstraintRule’ name=’Sample On Local Network’> <match> <ref>remoteAddr</ref> <s>192.168.</s> </match> <MemberObjectGroups> <ObjectRef type=’ObjectGroup’ name=’All’/> </MemberObjectGroups> </Rule> |
メニューバーで、「セキュリティー」->「ログイン」を選択して、「ログイン」ページにアクセスします。
ログインアプリケーションリストには次の内容が表示されます。
定義された各 Identity Manager ログインアプリケーション (インタフェース)
ログインアプリケーションを構成するログインモジュールグループ
各ログインアプリケーションに設定された Identity Manager セッションのタイムアウト制限
「ログイン」ページから次の操作を行えます。
カスタムログインアプリケーションの作成
カスタムログインアプリケーションの削除
ログインモジュールグループの管理
ログインアプリケーションを編集するには、リストからログインアプリケーションを選択します。
「ログインアプリケーションの修正」ページから、Identity Manager ログインセッションごとのタイムアウト値 (制限) を設定できます。時間、分、および秒を選択して、「保存」をクリックします。設定した制限が、ログインアプリケーションリストに表示されます。
各 Identity Manager ログインアプリケーションにセッションタイムアウトを設定できます。ユーザーが Identity Manager アプリケーションにログインすると、現在のタイムアウト設定値を使用し、ユーザーセッションが使用されていないときにタイムアウトされる将来の日時が計算されます。こうして計算された日付はユーザーの Identity Manager セッションとともに格納されるため、リクエストが実行されるたびにチェックできます。
ログイン管理者がログインアプリケーションのセッションタイムアウト値を変更した場合、その値は将来のすべてのログインに影響します。既存のセッションは、ユーザーがログインしたときに適用されていた値に基づいてタイムアウトします。
HTTP タイムアウトの設定値はすべての Identity Manager アプリケーションに影響し、ログインアプリケーションのセッションタイムアウト値よりも優先されます。
「ログインアプリケーションの作成」および「ログインアプリケーションの修正」ページから、「無効」オプションを選択してログインアプリケーションを無効にし、それによってユーザーがログインできないようにすることができます。無効化されたアプリケーションにユーザーがログインしようとすると、そのユーザーはアプリケーションが現在無効になっていることを示す代替ページにリダイレクトされます。カスタムカタログを編集することで、このページに表示されるメッセージを編集することができます。
このオプションの選択を解除するまで、ログインアプリケーションは無効にされたままになります。安全確保のため、管理者ログインは無効にすることができません。
ログインモジュールグループリストには次の内容が表示されます。
各ログインモジュールグループ
ログインモジュールグループを構成する個々のログインモジュール
ログインモジュールグループに制約規則が含まれるかどうか
「ログインモジュールグループ」ページから、ログインモジュールグループを作成、編集、削除できます。リストからログインモジュールグループを選択して編集します。
詳細を入力するか、ログインモジュールに関して次のように選択します。ただし、各ログインモジュールですべてのオプションが使用可能なわけではありません。
「ログイン成功条件」。このモジュールに適用する条件を選択します。次の項目があります。
「必須」。成功するにはこのログインモジュールが必須です。成功したか失敗したかにかかわらず、認証はリスト内の次のログインモジュールに進みます。ログインモジュールが 1 つしかない場合、管理者は正常にログインします。
「必要条件」。成功するにはこのログインモジュールが必須です。成功すると、認証はリスト内の次のログインモジュールに進みます。失敗した場合、認証は続行しません。
「十分条件」。このログインモジュールは成功するために必須ではありません。成功すると、認証は次のログインモジュールに進まず、管理者は正常にログインします。失敗すると、認証はリスト内の次のログインモジュールに進みます。
「オプション」。このログインモジュールは成功するために必須ではありません。成功か失敗かに関係なく、認証はリスト内の次のログインモジュールに進みます。
ログイン検索属性(LDAP のみ)。関連する LDAP サーバーへのバインド (ログイン) 試行時に使用する、LDAP ユーザー属性名の順序付けられたリストを指定します。指定したユーザーのログイン名とともに、指定された LDAP ユーザー属性を使用して、一致する LDAP ユーザーを検索します。これによりユーザーは、LDAP の cn 属性または電子メールアドレス属性を使用して Identity Manager にログインできます (Identity Manager で LDAP へのパススルーが設定されている場合)。
たとえば、次のように指定するとします。そして、ユーザーは gwilson としてログインしようとするとします。このとき LDAP リソースはまず cn=gwilson という条件で LDAP ユーザーの検索を試行します。
cn
検索が成功した場合、ユーザーが指定したパスワードを使用してバインドが試行されます。成功しない場合、LDAP リソースは mail=gwilson という条件で LDAP ユーザーを検索します。この検索も失敗した場合、ログインは失敗します。
値を指定しない場合のデフォルト LDAP 検索属性は次のとおりです。
uid
cn
ログイン相関規則。ユーザーから提供されたログイン情報を、Identity Manager ユーザーにマッピングするためのログイン相関規則を選択します。この規則は、指定されているロジックを使用し Identity Manager ユーザーを検索するために使用されます。この規則は、一致する Identity Manager ユーザーを検索するために使用される、1 つ以上の AttributeConditions のリストを返す必要があります。選択する規則は、LoginCorrelationRule authType を持つ必要があります。認証されたユーザー ID を Identity Manager ユーザーにマッピングするために Identity Manager が実行する手順の説明については、例 12–2 を参照してください。
新規ユーザー命名規則。ログインの一環として新しい Identity Manager ユーザーを自動的に作成するときに使用される新規ユーザー命名規則を選択します。
「保存」をクリックして、ログインモジュールを保存します。一度保存すると、このモジュールをログインモジュールグループ内のほかのすべてのモジュールと関連づけて配置できます。
Identity Manager ログインが複数のシステムで認証されるように設定する場合は、Identity Manager の認証のターゲットとなるすべてのシステムで、アカウントのユーザー ID とパスワードを同じにします。
ユーザー ID とパスワードの組み合わせが異なる場合、ユーザー ID とパスワードが「Identity Manager ユーザーログインフォーム」に入力されたユーザー ID およびパスワードと一致しないシステムで、ログインが失敗します。
これらのシステムの中には、ログイン試行回数が一定数を超えるとアカウントを強制的にロックするロックアウトポリシーを持つものもあります。これらのシステムでは、ユーザーアカウントが最終的にロックされ、ユーザーが Identity Manager を通してログインした場合でも、引き続き成功します。
例 12–2 には、認証されたユーザー ID を Identity Manager ユーザーにマップするために Identity Manager が従う手順について説明する擬似コードが含まれています。
if an existing IDM user’s ID is the same as the specified user ID if that IDM user has a linked resource whose resource name matches the resource that was authenticated and whose accountId matches the resource accountId returned by successful authentication (e.g. dn), then we have found the right IDM user otherwise if there is a LoginCorrelationRule associated with the configured login module evaluate it to see if it maps the login credentials to a single IDM user otherwise login fails otherwise login fails if the specified userID does not match an existing IDM user’s ID try to find an IDM user that has a linked resource whose resource name matches the resource accountID returned by successful authentication if found, then we have found the right IDM user otherwise if there is a LoginCorrelationRule associated with the configured login module evaluate it to see if it maps the login credentials to a single IDM user otherwise login fails otherwise login fails |
例 12–2 では、システムはユーザーのリンクされたリソース (リソース情報) を使用して、一致する Identity Manager ユーザーを見つけようとします。ただし、リソース情報による方法が失敗し、loginCorrelationRule が設定されている場合、システムは loginCorrelationRule を使用して、一致するユーザーを見つけようとします。
論理的に同一のリソースが複数ある (たとえば、信頼関係を共有する Active Directory ドメインサーバーが複数ある) 場合や、複数のリソースがすべて同一物理ホスト上に置かれている場合、これらのリソースは「共通リソース」であることを指定できます。
リソースのグループを一度だけ試行して認証すればよいことが Identity Manager に認識されるように、共通リソースを宣言してください。そのようにしないと、ユーザーが誤ったパスワードを入力した場合、Identity Manager は同じパスワードを各リソースに対して試行します。これにより、ユーザーが誤ったパスワードを 1 回入力しただけでも、ログインが複数回失敗するためにユーザーのアカウントがロックされることになる場合があります。
共通リソースを使用すると、ユーザーは 1 つの共通リソースに対して認証を行うことができ、Identity Manager は自動的に、共通リソースグループ内の残りのリソースに対して、ユーザーの試行とマッピングを行います。たとえば、Identity Manager ユーザーアカウントが、リソース AD-1 のリソースアカウントにリンクされており、ログインモジュールグループで、ユーザーがリソース AD-2 に対して認証される必要があることが定義されている場合があります。
AD-1 と AD-2 が、共通リソースとして定義されている場合 (この場合、同じ信頼できるドメイン内にある)、ユーザーが AD-2 に対して正常に認証されると、Identity Manager はリソース AD-1 で同じユーザーの accountId を見つけることによって、そのユーザーを AD-1 にもマップすることができます。
共通リソースグループ内にリストされるすべてのリソースは、ログインモジュールの定義にも含まれている必要があります。共通リソースの完全なリストがログインモジュールの定義にも記載されていない場合、共通リソース機能は正しく動作しません。
共通リソースは、システム設定オブジェクト (「Identity Manager 設定オブジェクトの編集」) で以下の形式で定義できます。
<Attribute name=’common resources’> <Attribute name=’Common Resource Group Name’> <List> <String>Common Resource Name</String> <String>Common Resource Name</String> </List </Attribute> </Attribute> |
次の情報と手順を使用して、Identity Manager の X509 証明書認証を設定します。
Identity Manager で X509 証明書ベースの認証をサポートするには、クライアントとサーバーの 2 方向の SSL 認証が正しく設定されているかを確認します。クライアントの観点では、これは、X509 準拠のユーザー証明書がブラウザにインポートされ (またはスマートカードリーダーで利用可能で)、ユーザー証明書に署名するために使用された信頼できる証明書が、Web アプリケーションサーバーの信頼できる証明書のキーストアにインポートされている必要があることを意味します。
さらに、使用したクライアント証明書がクライアント認証のために選択されている必要があります。
Internet Explorer を使用して、「ツール」を選択し、「インターネット オプション」を選択します。
「コンテンツ」タブを選択します。
「証明書」領域で、「証明書」をクリックします。
クライアント証明書を選択し、「詳細」をクリックします。
「証明書の目的」領域で、「クライアント認証」オプションが選択されていることを確認します。
管理者インタフェースに Configurator (または同等の権限を持つユーザー) としてログインします。
「設定」を選択し、「ログイン」を選択して、「ログイン」ページを表示します。
「ログインモジュールグループの管理」をクリックし、「ログインモジュールグループ」ページを表示します。
リストからログインモジュールグループを選択します。
「ログインモジュールの割り当て」リストから Identity Manager の X509 証明書ログインモジュールを選択します。「ログインモジュールグループの修正」ページが表示されます。
ログインの成功条件を設定します。
次の値が有効です。
「必須」。成功するにはこのログインモジュールが必須です。成功したか失敗したかにかかわらず、認証はリスト内の次のログインモジュールに進みます。ログインモジュールが 1 つしかない場合、管理者は正常にログインします。
「必要条件」。成功するにはこのログインモジュールが必須です。成功すると、認証はリスト内の次のログインモジュールに進みます。失敗した場合、認証は続行しません。
「十分条件」。このログインモジュールは成功するために必須ではありません。成功すると、認証は次のログインモジュールに進まず、管理者は正常にログインします。失敗すると、認証はリスト内の次のログインモジュールに進みます。
「オプション」。このログインモジュールは成功するために必須ではありません。成功か失敗かに関係なく、認証はリスト内の次のログインモジュールに進みます。
ログイン相関規則を選択します。組み込み規則またはカスタム相関規則を選択できます。(カスタム相関規則の作成については、次の節を参照してください。
「保存」をクリックして、「ログインモジュールグループの修正」ページに戻ります。
オプションの作業として、ログインモジュールの順序を変更し (複数のログインモジュールがログインモジュールグループに割り当てられている場合)、「保存」をクリックします。
ログインモジュールグループがログインアプリケーションに割り当てられていない場合はここで割り当てます。「ログインモジュールグループ」ページで、「ログインアプリケーションに戻る」をクリックし、ログインアプリケーションを選択します。ログインモジュールグループをログインアプリケーションに割り当てたら、「保存」をクリックします。
waveset.properties ファイルで allowLoginWithNoPreexistingUser オプションの値が true に設定されている場合、「Identity Manager X509 証明書ログインモジュール」を設定するときに、新規ユーザー命名規則を選択するプロンプトが表示されます。この規則は、関連付けられたログイン相関規則によってユーザーが検出されないときに作成される新しいユーザーの命名方法を決定するために使用されます。新規ユーザー命名規則では、ログイン相関規則と同じ入力引数を使用できます。user name used to create the new Identity Manager user account という 1 つの文字列が返されます。サンプルの新規ユーザー命名規則は、idm/sample/rules に NewUserNameRules.xml という名前で含まれます。
Identity Manager の X509 証明書ログインモジュールは、ログイン相関規則を使用して証明書データを該当する Identity Manager ユーザーにマップする方法を決定します。Identity Manager には、Correlate via X509 Certificate subjectDN という名前の組み込み型の相関規則が含まれます。
独自の相関規則を追加することもできます。例として、idm/sample/rules ディレクトリにある LoginCorrelationRules.xml を参照してください。
各相関規則は、次のガイドラインに従っている必要があります。
authType 属性は LoginCorrelationRule に設定する必要があります。
相関規則は、関連付けられた Identity Manager ユーザーを検出するためにログインモジュールが使用する AttributeConditions のリストのインスタンスを返す必要があります。たとえば、ログイン相関規則は、関連付けられた Identity Manager ユーザーを電子メールアドレスによって検索する AttributeCondition を返す場合があります。
次の引数がログイン相関規則に渡されます。
標準の X509 証明書フィールド (subjectDN、issuerDN、有効な日付など)
重要な拡張プロパティーと重要ではない拡張プロパティー
次の証明書引数の命名規則がログイン相関規則に渡されます。
cert.field name.subfield name
次の例のような引数名を規則で使用できます。
cert.subjectDN
cert.issuerDN
cert.notValidAfter
cert.notValidBefore
cert.serialNumber
ログイン相関規則は、渡された引数を使用して、1 つ以上の AttributeConditions のリストを返します。Identity Manager X509 証明書ログインモジュールは、これらを使用して関連付けられた Identity Manager ユーザーを検出します。
サンプルのログイン相関規則が、LoginCorrelationRules.xml という名前で、idm/sample/rules にあります。
カスタム相関規則を作成したら、その規則を Identity Manager にインポートする必要があります。管理者インタフェースで、「設定」を選択し、「交換ファイルのインポート」を選択して、ファイルインポート機能を使用します。
SSL 接続をテストするには、SSL を使用して、設定済みのアプリケーションインタフェースの URL (例: https//idm007:7002/idm/user/login.jsp) にアクセスします。セキュアなサイトに入ったことを知らせるメッセージが表示され、Web サーバーに送信する個人用証明書を指定するようにリクエストされます。
X509 証明書を使用した認証の問題は、ログインフォームでエラーメッセージとして報告されます。
詳しい診断情報を得るには、Identity Manager サーバーで次のクラスとレベルのトレースを有効にします。
com.waveset.session.SessionFactory 1
com.waveset.security.authn.WSX509CertLoginModule 1
com.waveset.security.authn.LoginModule 1
HTTP リクエスト内のクライアント証明書の属性が javaxservlet.request.X509Certificate 以外である場合、この属性が HTTP リクエスト内に見つからないことを知らせるメッセージが表示されます。
SessionFactory のトレースを有効にして、HTTP 属性の完全なリストを表示し、X509Certificate の名前を特定します。
Identity Manager のデバッグ機能 (「Identity Manager デバッグページ」) を使用して、LoginConfig オブジェクトを編集します。
X509 証明書ログインモジュールの <LoginConfigEntry> 内の <AuthnProperty> の名前を正しい名前に変更します。
保存して、もう一度試します。
さらに、Identity Manager X509 証明書ログインモジュールをログインアプリケーションから削除して、もう一度追加することが必要な場合があります。
暗号化は、メモリーおよびリポジトリ内のサーバーデータだけでなく、Identity Manager サーバーとゲートウェイの間で送信されるすべてのデータの機密性と完全性を保証するために使用されます。
続く節では、Identity Manager サーバーおよびゲートウェイでの暗号化の使用および管理方法を詳しく説明し、サーバーとゲートウェイの暗号化キーに関する疑問を解決します。
次の表は、Identity Manager 製品で暗号化によって保護されるデータの種類と、各データの種類を保護するために使用される暗号を示したものです。
表 12–1 暗号化によって保護されるデータの種類
データ型 |
RSAMD5 |
NIST トリプル DES 168 ビットキー (DESede/ECB/NoPadding) |
PKCS#5 パスワードベースの Crypto56 ビットキー (PBEwithMD5andDES) |
---|---|---|---|
サーバー暗号化キー |
Default |
設定オプション |
|
ゲートウェイ暗号化キー |
Default |
設定オプション1 |
|
ポリシー辞書単語 |
はい | ||
ユーザーパスワード |
はい | ||
ユーザーパスワード履歴 |
はい | ||
ユーザーの回答 |
はい | ||
リソースパスワード |
はい | ||
リソースパスワード履歴 |
はい | ||
サーバーゲートウェイ間のすべてのペイロード |
はい |
続く節では、サーバー暗号化キーのソース、場所、保守、使用についてよく尋ねられる質問に答えていますのでご覧ください。
質問:サーバー暗号化キーとは何ですか ?
回答:サーバー暗号化キーはトリプル DES 168 ビットの対称キーです。
サーバーでサポートされるキーには 2 つのタイプがあります。
デフォルトキー。このキーは、コンパイル時にサーバーコードに組み込まれます。
ランダムに生成されるキー。このキーは、サーバーの最初の起動時、または現在のキーのセキュリティーに不安がある場合にいつでも生成することができます。
サーバー暗号化キーはどこで維持管理されますか ?
回答:サーバー暗号化キーはリポジトリで維持管理されるオブジェクトです。どのリポジトリにも多数のデータ暗号化キーがある可能性があります。
質問:暗号化されたデータの復号化や再暗号化にどのキーを使用するかを、サーバーはどのようにして認識するのですか ?
回答:リポジトリに格納された各暗号化データの先頭には、そのデータを暗号化する際に使用したサーバー暗号化キーの ID が付加されます。暗号化データを含むオブジェクトがメモリーに読み込まれると、Identity Manager はその暗号化データ の ID プレフィックスに関連づけられたサーバー暗号化キーを使用して復号化し、データが変更されている場合には同じキーで再暗号化します。
質問:サーバー暗号化キーはどのようにして更新しますか ?
回答:Identity Manager には「サーバー暗号化の管理」というタスクが用意されています。
このタスクを使用することにより、承認されたセキュリティー管理者は次のようなキー管理タスクを実行することができます。
新しい現在のサーバーキーの生成
現在のサーバーキーを使用して暗号化したデータを含む既存オブジェクトに対する、タイプ別の再暗号化
このタスクの使用法の詳細については、この章の「サーバー暗号化の管理」を参照してください。
質問:現在のサーバーキーが変更された場合、既存の暗号化データはどうなりますか ?
回答:何も問題はありません。既存の暗号化データは、引き続き、暗号化データの ID プレフィックスで参照されているキーを使用して復号化や再暗号化されます。新しいサーバー暗号化キーが生成され、そのキーが現在のキーに設定された場合、新たに暗号化されるデータには新しいサーバーキーが使用されます。
複数のキーがあることによる問題を回避するため、またデータの完全性のレベルを高い状態に保つために、「サーバー暗号化の管理」タスクを使用して、現在のサーバー暗号化キーで既存の暗号化データをすべて再暗号化してください。
質問:暗号化キーを使用できない暗号化データをインポートした場合、どのようなことが起こりますか ?
回答:暗号化データを含むオブジェクトをインポートする際、読み込み先となるリポジトリにないキーでデータが暗号化されている場合、データはインポートされますが、復号化されません。
質問:サーバーキーはどのように保護されますか ?
回答:サーバーがパスワードベースの暗号化 (PBE) - PKCS#5 暗号化を使用するよう pbeEncrypt 属性または「サーバー暗号化の管理」タスクを使用してシステム設定オブジェクトで設定されていない場合には、デフォルトキーを使用してサーバーキーが暗号化されます。デフォルトキーはすべての Identity Manager インストールで同じです。
サーバーが PBE 暗号化を使用するよう設定されている場合は、サーバーを起動するたびに PBE キーが生成されます。PBE キーは、サーバー固有の秘密キーから生成されるパスワードを PBEwithMD5andDES 暗号に渡すことによって生成されます。PBE キーはメモリー内にのみ保持され、それが持続させられることは決してありません。また、共通リポジトリを共有するすべてのサーバーの PBE キーは同じです。
サーバーキーの PBE 暗号化を有効にするには、暗号 PBEwithMD5andDES が使用可能である必要があります。Identity Manager はデフォルトではこの暗号をパッケージ化しませんが、この暗号は、Sun や IBM によって提供される実装など、多くの JCE プロバイダの実装で使用可能な PKCS#5 標準です。
質問:サーバーキーを安全な外部記憶装置にエクスポートしてもよいですか ?
回答:はい。サーバーキーが PBE 暗号化されている場合、エクスポートの前に、サーバーキーは復号化されてデフォルトキーで再暗号化されます。これにより、それ以後ローカルサーバー PBE キーに依存することなく、同じサーバーまたは別のサーバーにサーバーキーをインポートできるようになります。サーバーキーがデフォルトキーで暗号化されている場合は、エクスポート前の事前処理は行われません。
サーバーキーをサーバーにインポートするときには、サーバーが PBE キー用に設定されていればキーが復号化され、次いで、そのサーバーが PBE キー暗号化用に設定されていればローカルサーバーの PBE キーで再暗号化されます。
質問:どのデータがサーバーとゲートウェイの間で暗号化されますか ?
回答:サーバーとゲートウェイの間で送信されるすべてのデータ (ペイロード) が、ランダムに生成されたサーバーゲートウェイセッション対称 168 ビットキーを使用してトリプル DES で暗号化されます。
続く節では、ゲートウェイのソース、記憶装置、配布、保護についてよく尋ねられる質問に答えていますのでご覧ください。
質問:データの暗号化または復号化に使用するゲートウェイキーとは何ですか ?
回答:Identity Manager サーバーがゲートウェイに接続するたびに、初期ハンドシェークによって新規のランダム 168 ビット、トリプル DES セッションキーが生成されます。それ以降サーバーとゲートウェイの間で送信されるすべてのデータは、このキーを使用して暗号化または復号化されます。サーバー/ゲートウェイのペアごとに一意のセッションキーが生成されます。
質問:ゲートウェイキーはどのようにゲートウェイに配布されますか ?
回答:セッションキーはサーバーによってランダムに生成された後、初期サーバーゲートウェイ間ハンドシェークの一環として共有秘密マスターキーによって暗号化されることにより、サーバーとゲートウェイの間でセキュアに交換されます。
初期ハンドシェーク時に、サーバーはゲートウェイに問い合わせて、ゲートウェイがサポートするモードを判別します。ゲートウェイは次の 2 つのモードで作動します。
「デフォルト」モード。サーバーゲートウェイ間の初期プロトコルハンドシェークは、コンパイル時にサーバーコードに組み込まれている、デフォルトの 168 ビットトリプル DES キーで暗号化されます。
「セキュア」モード。共有リポジトリを使用する、ランダムな 168 ビットキーであるトリプル DES ゲートウェイキーが生成され、初期ハンドシェークプロトコルの一環としてサーバーからゲートウェイに送信されます。このゲートウェイキーは他の暗号化キーと同様にサーバーリポジトリに格納され、ゲートウェイによりゲートウェイ自身のローカルレジストリにも格納されます。
セキュアモードでかつサーバーがゲートウェイに接続している場合、サーバーはテストデータをゲートウェイキーで暗号化してゲートウェイに送信します。ゲートウェイはテストデータの復号化を試み、テストデータにゲートウェイ固有のデータを追加してから、両方を再暗号化してサーバーに送り返します。サーバーがテストデータとゲートウェイ固有のデータを正常に復号化できた場合、サーバーはサーバーゲートウェイ間用に一意のセッションキーを生成し、それをゲートウェイキーで暗号化してゲ?トウェイに送信します。ゲートウェイはセッションキーを受け取ると、すぐに復号化し、サーバーとゲートウェイ間のセッションが持続する間そのキーを保持して使用します。サーバーがテストデータとゲートウェイ固有のデータを正常に復号化できない場合、サーバーはデフォルトキーを使用してゲートウェイキーを暗号化し、ゲートウェイに送信します。ゲートウェイはコンパイル時に組み込まれたデフォルトキーを使用してゲートウェイキーを復号化し、そのゲートウェイキーをレジストリに格納します。その後、サーバーはそのゲートウェイキーを使ってサーバーゲートウェイ間で一意のセッションキーを暗号化し、セッションキーをゲートウェイに送信して、サーバーゲートウェイ間のセッションが持続する間そのセッションキーを使用します。
それ以後、ゲートウェイは自身のゲートウェイキーでセッションキーを暗号化したサーバーからのリクエストのみを受け入れます。ゲートウェイは、起動時にキーのレジストリをチェックします。キーが存在する場合、ゲートウェイはそのキーを使用します。キーが存在しない場合、ゲートウェイはデフォルトキーを使用します。ゲートウェイがレジストリにキーセットを持つと、ゲートウェイはデフォルトキーを使用したセッションの確立を許可しなくなり、第三者が不正なサーバーを設定したりゲートウェイへの接続を確立したりするのを防ぎます。
サーバーゲートウェイ間ペイロードの暗号化や復号化に使用するゲートウェイキーを更新できますか ?
回答:Identity Manager には「サーバー暗号化の管理」というタスクが用意されており、承認されたセキュリティー管理者はいろいろなキー管理タスクを実行することができます。そのタスクには、新しい現在のゲートウェイキーの生成や生成された現在のゲートウェイキーによるすべてのゲートウェイの更新などが含まれます。このキーはサーバーゲートウェイ間で送信されるすべてのペイロードを保護する、セッション単位のキーを暗号化するために使用されます。新たに生成されるゲートウェイキーは、システム設定 (「Identity Manager 設定オブジェクトの編集」) の pbeEncrypt 属性の値に基づいて、デフォルトキーまたは PBE キーで暗号化されます。
質問:ゲートウェイキーはサーバー上とゲートウェイ上のどこに格納されますか ?
回答:サーバー上では、ゲートウェイキーはサーバーキーとまったく同じようにリポジトリに格納されます。ゲートウェイ上では、ローカルレジストリキー内に格納されます。
質問:ゲートウェイキーはどのように保護されますか ?
回答:ゲートウェイキーはサーバーキーの場合と同じように保護されます。サーバーが PBE 暗号化を使用するように設定されている場合、ゲートウェイキーは PBE が生成するキーで暗号化されます。このオプションが false に設定されている場合には、ゲートウェイキーはデフォルトキーで暗号化されます。詳細は、「サーバー暗号化キーについてのよくある質問」を参照してください。
質問:ゲートウェイキーを安全な外部記憶装置にエクスポートしてもよいですか ?
回答:ゲートウェイキーは、サーバーキーの場合と同じく、「サーバー暗号化の管理」タスクを使用してエクスポートできます。詳細は、「サーバー暗号化キーについてのよくある質問」を参照してください。
質問:サーバーキーとゲートウェイキーはどのように破棄されますか ?
回答:サーバーキーとゲートウェイキーは、サーバーリポジトリからそれらを削除することによって破棄されます。あるキーを使用して暗号化されたサーバーデータがある間や、そのキーに依存するゲートウェイがある間は、そのキーを削除しないように注意してください。「サーバー暗号化の管理」タスクを使用して、現在のサーバーキーですべてのサーバーデータを再暗号化し、現在のゲートウェイキーをすべてのゲートウェイで同期することによって、古いキーを削除する前に、確実にどの古いキーも使用されていない状態になるようにしてください。
Identity Manager のサーバー暗号化機能を使用すると、新しい 3DES サーバー暗号化キーを作成し、これらのキーを 3DES、PKCS#5、または AES (Advanced Encryption Standard) 暗号化を使用して暗号化できます。サーバー暗号化の管理タスクは、Security Administrator 機能を持つユーザーだけが実行でき、「サーバー暗号化の管理」ページから設定します。
「サーバー暗号化の管理」ページを開くには、次の手順に従います。
メニューバーから「サーバータスク」>「タスクの実行」を選択します。
「利用可能なタスク」ページが表示されたら、「サーバー暗号化の管理」をクリックして「サーバー暗号化の管理」ページを開きます。
このページを使用してサーバーとオブジェクトの暗号化、ゲートウェイキー、バックアップオプション、および実行モードを設定します。
「タスク名」を入力します。
このフィールドのデフォルトは、「サーバー暗号化の管理」です。デフォルト設定を使用しない場合は、別のタスク名を入力できます。
次のオプションの 1 つ以上を選択します。
選択に応じて、以下の処理を行うことができます。
サーバー暗号化の管理. サーバー暗号化を設定するには、このオプションを選択します。
さらに次のオプションが表示されます。
「サーバー暗号化キーの暗号化」。サーバー暗号化キーの暗号化方法を指定する必要があります。暗号化タイプには、トリプル DES、PKCS#5 (DES)、PKCS#5 (AES) が含まれます。
このページには、システム上でインスタンス化が可能な暗号化タイプのみが表示されます。たとえば、PKCS#5 (AES) がサポートされない場合は、トリプル DES と PKCS#5 (DES) のみが表示されます。
PKCS#5 (AES) では、Identity Manager を実行する JVM の「Unlimited Strength Jurisdiction Policy Files」をダウンロードして設定する必要があります。詳細は、Java ベンダーのマニュアルを参照してください。
また、PKCS#5 (AES) では、Identity Manager を実行する JVM の JCE プロバイダとして、Bouncy Castle JCE provider jar ファイルをインストールして設定する必要があります。この jar ファイルは、Identity Manager のインストールイメージにパッケージ化され、wshome/WEB-INF/lib ディレクトリに配置されます。対応する Java のバージョンで使用するために、2 つの jar ファイル、bcprov-jdk15-137.jar と bcprov-jdk16-137.jar が提供されます。詳細は、Java ベンダーのマニュアルや Bouncy Castle のマニュアルを参照してください。
「新しいサーバー暗号化キーを生成し、現在のサーバー暗号化キーとして設定する」。新しいサーバー暗号化キーの生成を選択します。このオプションを選択した後に暗号化されるデータは、この鍵を使用して暗号化されます。新しいサーバー暗号化鍵を生成しても、すでに暗号化されているデータに適用された鍵には影響しません。
「セキュリティー保護された新規ランダム PBE パスワードの生成」。サーバーが起動するたびにサーバー固有の秘密キーに基づいて新しいパスワードを生成するには、このオプションを選択します。このオプションを選択しなかった場合や、サーバーがパスワードベースの暗号化を使用するように設定されていない場合、Identity Manager はデフォルトキーを使用してサーバーキーを暗号化します。
「オブジェクト暗号化の管理」。再暗号化すべきオブジェクトタイプや使用する暗号化方法を指定するには、このオプションを選択します。
「オブジェクトタイプの暗号化」。表示されている暗号化タイプのいずれかを選択します。暗号化タイプには、トリプル DES (デフォルト)、AES 256 ビットキー、AES、192 ビットキー、AES 128 ビットキーが含まれます。
192 ビットキーまたは 256 ビットキーを使用する AES では、Identity Manager を実行する JVM の「Unlimited Strength Jurisdiction Policy Files」をダウンロードして設定する必要があります。詳細は、Java ベンダーのマニュアルを参照してください。
このページには、システム上でインスタンス化が可能な暗号化タイプのみが表示されます。たとえば、「Unlimited Strength Jurisdiction Policy Files」を使用する AES 192 ビットキーまたは 256 ビットキーがサポートされない場合は、トリプル DES および AES 128 ビットキーオプションのみが表示されます。
「現在のサーバー暗号化キーを使用して再暗号化するオブジェクトタイプを選択」。表に一覧表示される 1 つ以上の Identity Manager オブジェクトタイプを選択します。
「ゲートウェイ鍵の管理」。ゲートウェイ暗号化を指定するには、このオプションを選択します。
次のオプションが表示されます。
「ゲートウェイ鍵オプションの選択」。次のオプションのいずれかを選択します。
「新しい鍵を生成し、すべてのゲートウェイを同期させる」。最初からセキュリティー保護されたゲートウェイ環境を有効にする場合は、このオプションを選択します。このオプションは、新しいゲートウェイ鍵を生成し、その鍵をすべてのゲートウェイに送信します。
「現在のゲートウェイ鍵を使用して、すべてのゲートウェイを同期させる」。新しいゲートウェイ、または新しいゲートウェイキーが送信されていないゲートウェイを同期させる場合に選択します。すべてのゲートウェイが現在のゲートウェイ鍵を使用して同期されている状況で 1 つのゲートウェイが停止した場合、または新規ゲートウェイに鍵の更新を強制する場合は、このオプションを選択します。
「ゲートウェイ鍵のタイプ」。表示されているキータイプのいずれかを選択します。キータイプには、トリプル DES、AES 256 ビットキー、AES、192 ビットキー、AES 128 ビットキーが含まれます。
192 ビットキーまたは 256 ビットキーを使用する AES では、Identity Manager を実行する JVM の「Unlimited Strength Jurisdiction Policy Files」をダウンロードして設定する必要があります。詳細は、Java ベンダーのマニュアルを参照してください。
このページには、システム上でインスタンス化が可能な暗号化タイプのみが表示されます。たとえば、「Unlimited Strength Jurisdiction Policy Files」を使用する AES 192 ビットキーまたは 256 ビットキーがサポートされない場合は、トリプル DES および AES 128 ビットキーオプションのみが表示されます。
「バックアップ用にサーバー暗号化キーをエクスポート」。既存のサーバー暗号化キーを XML 形式のファイルにエクスポートするには、このオプションを選択します。このオプションを選択すると、鍵のエクスポート先となるパスとファイル名を指定するための追加フィールドが表示されます。
PKCS#5 暗号化を使用していて、新しいサーバー暗号化キーを生成および設定するように選択した場合は、このオプションを選択します。さらに、エクスポートした鍵を取り外し可能な媒体に保存し、ネットワーク上ではない安全な場所に保管してください。
「実行モード」を選択します。
このタスクは、フォアグラウンドまたはバックグラウンド (デフォルト設定) で実行できます。
新しく生成したキーを使用して 1 つ以上のオブジェクトタイプを再暗号化する場合には、時間がかかることがあるため、バックグラウンドで実行することをお勧めします。
このページでオプションの設定が終了したら、「起動」をクリックします。
通常は AdminGroup 機能で指定した権限を使用して、設定、規則、TaskDefinition などの Identity Manager の objectType に対するアクセス権を付与します。ただし、1 つ以上の管理する組織内にある Identity Manager objectType のすべてのオブジェクトに対してアクセス権を付与するのは範囲が広すぎます。
認可タイプ (AuthType) を使用すると、特定の Identity Manager objectType に関して、オブジェクトのサブセットに対するアクセスの範囲を指定したり、制限したりすることができます。たとえば、ユーザーフォームでの選択元になる規則を作成している場合、ユーザーの管理範囲内にあるすべての規則に対しては、ユーザーにアクセスを付与したくない場合があります。
新しい認可タイプを定義するには、Identity Manager リポジトリで AuthorizationTypes 設定オブジェクトを編集し、新しい <AuthType> 要素を追加します。
この要素には次の 2 つのプロパティーが必要です。
新しい認可タイプの名前
新しい要素で拡張または範囲の指定を行う、既存の認可タイプまたは objectType
たとえば、Rule を拡張する Marketing Rule という名前の新しい Rule 認可タイプを追加する場合は、次のように定義します。
<AuthType name=’Marketing Rule’ extends=’Rule’/>
次に、使用するために認可タイプを有効にするには、その認可タイプを 2 つの場所で参照する必要があります。
新しい認可タイプに対する権限を 1 つ以上与えるカスタム AdminGroup 機能の内部
このタイプであるべきオブジェクトの内部
以下に、両方の参照の例を示します。最初の例は、Marketing Rule に対するアクセス権を与える AdminGroup 機能の定義を示しています。
<AdminGroup name=’Marketing Admin’> <Permissions> <Permission type=’Marketing Rule’ rights=’View,List,Connect,Disconnect/> </Permissions> <AdminGroups> <ObjectRef type=’AdminGroup’ id=’#ID#Account Administrator’/> </AdminGroups> </AdminGroup> |
次の例は、Rule または Marketing Rule に対するアクセス権を付与されているため、ユーザーがオブジェクトにアクセスできるようになる Rule 定義を示しています。
<Rule name=’Competitive Analysis Info’ authType=’Marketing Rule’> ... </Rule> |
親の認可タイプに対して、または認可タイプによって拡張された静的タイプに対してアクセス権を付与されたすべてのユーザーは、子であるすべての認可タイプに対して同じ権限を持つことになります。このため、前の例を使用すると、Rule に対する権限を付与されたユーザーはすべて、Marketing Rule に対しても同じ権限を持つことになります。ただしその逆は成り立ちません。
Identity Manager 管理者は、設定時とそれ以降に次の推奨事項に従うことで、保護されたアカウントおよびデータに対するセキュリティー上のリスクをさらに軽減できます。
設定時のセキュリティーリスクを軽減するには、次の推奨事項に従います。
HTTPS を使用するセキュアな Web サーバーを通じて Identity Manager にアクセスする。
デフォルトの Identity Manager 管理者アカウント (Administrator と Configurator) 用のパスワードをリセットする。これらのアカウントのセキュリティーをさらに向上させるには、アカウント名を変更します。
Configurator のアカウントへのアクセス権を制限する。
管理者の機能セットをその職務権限に必要な操作のみに制限し、組織階層を設定して管理者の機能を制限する。
Identity Manager インデックスリポジトリのデフォルトパスワードを変更する。
Identity Manager アプリケーションでのアクティビティーの追跡の監査をオンにする。
Identity Manager ディレクトリのファイルに対する権限を編集する。
承認またはほかのチェックポイントを挿入してワークフローをカスタマイズする。
復旧手順を作成して、緊急の際に Identity Manager 環境を復旧する方法を記述しておく。
実行時のセキュリティーリスクを軽減するには、次の推奨事項に従います。
デフォルトの Identity Manager 管理者アカウント (Administrator と Configurator) 用のパスワードを定期的に変更する。
システムをあまり使用していないときには Identity Manager からログアウトする。
Identity Manager セッションのデフォルトのタイムアウト期間を設定する、あるいは既存の設定値を知っておく。セッションタイムアウト値は各ログインアプリケーションに別々に設定できるため、異なる可能性があります。
アプリケーションサーバーが Servlet 2.2 準拠の場合、Identity Manager のインストールプロセスでは、HTTP セッションのタイムアウトをデフォルトの 30 分に設定します。この値はプロパティーを編集して変更できますが、セキュリティーを向上させるため、この値を低く設定する必要があります。30 分を超える値を設定しないでください。