14 Oracle Unified Directoryにおけるデータ暗号化の理解

次の各トピックでは、Oracle Unified Directoryにおけるデータ暗号化について理解します。基本的な暗号化の概念、サポートされる機能および基本的な構成タスクについて把握してください。

14.1 属性の暗号化とは

暗号化は、無許可の機密データへのアクセスを防止するために、平文のデータを暗号文という判読できない形式に変換するメカニズムです。復号化は、暗号文を変換して平文に戻すプロセスです。

Oracle Unified Directoryは、ストレージ、同期およびプロキシ機能を統合して、ビジネス・アプリケーションが動作するための重要な識別情報の管理を支援する、次世代の統合ディレクトリ・ソリューションです。このデータには、機密情報が含まれている可能性があり、参照できるのは意図された受信者のみにする必要があります。Oracle Unified Directoryでは、データへのアクセスをセキュリティで保護する、アクセス制御ルール、パスワード認証、SSLなどのメカニズムが提供されています。データには、クレジット・カード番号やSSN番号などの非常に機密性の高い情報が含まれている可能性もあります。このタイプのデータの場合、情報がデータベース内に判読可能な平文で保存されているため、無許可のアクセスを防止するために標準的な対策のみでは不十分です。侵入者がサーバーのストレージ・ファイルにアクセスし、この情報を私的な利益のために使用する場合、その損害は大きなセキュリティ・リスクとなります。

Oracle Unified Directoryでは、特定のセンシティブ属性を暗号文として保存できる属性の暗号化機能を提供しています。これにより、基礎となるデータベース・ファイル、バックアップ・ファイルおよびエクスポートされたLDIFファイルに保存されている間はデータを読み取れなくなります。属性を暗号化すると、重要なデータをディスクに書き込む前に暗号化でき、ディスクから読み取るときに復号化できます。

ノート:

属性の暗号化機能では、LDAPプロトコルで取得されるデータは暗号化されません。ディスク上に保存されたデータのみが暗号化されます。

LDAPクライアントが暗号化された属性を持つ、ディスク上のエントリを読み取る(検索する)場合、そのクライアントは復号化されたエントリを受け取るため、暗号化された元の属性の値を復号化しなくてもすぐに読み取ることができます。

デフォルトでは、属性は暗号化されません。属性の暗号化は、接尾辞レベルで構成されます。つまり、接尾辞内でその属性が現れるエントリごとに属性が暗号化されます。したがって、属性が暗号化された後、その属性のすべてのインスタンスがデータベース・ファイルに保存される前に暗号化されます。これは、ディスク上にあるその特定の属性のすべてのデータが暗号化されることを意味します。

暗号化は常に可逆です。検索リクエストの結果として返されるときには、暗号化された属性が復号化されます。ディレクトリ全体で属性を暗号化する場合は、それぞれの接尾辞でその属性の暗号化を有効にするか、接頭辞のリストを空のままにしておく必要があります。

ノート:

属性の暗号化は、接尾辞に関連付けられたすべてのデータおよび索引ファイルに影響を与えます。これらの属性は、属性の暗号化がアクティブ化された後で変更(暗号化)されます。既存の属性は、そのまま変更されません。

すべてのデータに暗号化を適用するには、まず構成を変更してから、内容をエクスポートし、その内容をインポートしなおす必要があります。

属性の暗号化を使用すると、データを暗号化された形式で別のデータベースにエクスポートすることもできます。属性の暗号化の目的は、機密データが格納またはエクスポートされる場合にのみ、それらのデータを保護することです。

関連トピック

監査ログでの属性のマスク

14.2 属性の暗号化の理解

デフォルトでは、属性は暗号化されません。属性の暗号化は接尾辞レベルで構成する必要があります。これは、接尾辞に出現するすべてのエントリに対して属性が暗号化されることを意味します。

Oracle Unified Directoryでは次のものを暗号化できます。

  • 必須属性タイプ・リストに定義された特定の属性タイプ

    ノート:

    一部の操作属性や内部属性(entryuuidやcreateTimestamp、仮想属性、パスワード属性など)は暗号化できません。暗号化でサポートされていない属性の詳細は、「属性の暗号化の使用に関する考慮事項」を参照してください。

  • DBローカル・バックエンド(ユーザー・バックエンド)のみ

  • すべての使用可能なDBローカル・バックエンドのすべての接尾辞の属性、またリストに指定されている場合は次のような一部の特定の接尾辞。たとえば:

    接尾辞が指定される場合、サブ接尾辞ではなくDBローカル・バックエンドのルート接尾辞である必要があります。たとえば、DBローカル・バックエンドにルート接頭辞のdc=example,dc=comがある場合、ou=people,dc=example,dc=comにある一部の属性のみを暗号化することはできません。

14.3 暗号化アルゴリズムの理解

Oracle Unified Directoryでは、暗号化アルゴリズムを使用して、ディスクに格納されているエントリの属性への無許可のアクセスを防止できます。

暗号化アルゴリズムは、データの暗号化および復号化に使用される数学的な一連の規則または関数です。これらのアルゴリズムは、データを暗号化または復号化するキーと連携して動作します。

属性の暗号化機能では、標準的な暗号化アルゴリズムが幅広くサポートされています。

サーバーでは、いくつかの暗号化スキームを使用して属性を暗号化できます。サポートされている暗号化スキームは次のとおりです。

  • AES128

  • AES256

    ノート:

    該当する場合、Java Cryptography Extension (JCE) Unlimited Strength Jurisdictionポリシー・ファイルをダウンロードします。ダウンロード・ページは、https://www.oracle.com/in/java/technologies/javase-jce-all-downloads.htmlです
  • Blowfish (128ビット・キー)

  • トリプルDES (168ビット・キー)

  • RC4 (128ビット・キー)

OUDバンドル・パッチ12.2.1.4.211008以降のリリース。 このコンテンツは、OUDバンドル・パッチ12.2.1.4.211008以降のリリースにのみ適用されます。

新しくサポートされる暗号化スキームは次のとおりです:

  • AES-128-GCM
  • AES-192-GCM
  • AES-256-GCM (12.2.1.4.211030 BPリリースからのデフォルト)

    ノート:

    前述のリストのGCMベースの強力な暗号化アルゴリズムを使用することをお薦めします。後方互換性のために、弱いアルゴリズムが使用されます。OUDサーバーによって弱い暗号化アルゴリズムが検出されると、サーバー・ログに警告メッセージが記録されます。

14.3.1 属性暗号化キー

Oracle Unified Directoryでは、属性の暗号化および復号化に対称キーが使用されます。必要に応じて、必要な対称キーが生成されます。対称キーは暗号化され、cn=admin dataバックエンドに安全に格納されます。この暗号化は、サーバーの公開キーを使用して行われます。したがって、格納されている暗号化された対称キーは、サーバーの秘密キーを使用してのみ復号化できます。

14.4 索引キーの暗号化の理解

攻撃者は、索引ファイルを通じて直接機密データにアクセスすることもできます。したがって、暗号化する属性に対応する索引キーを暗号化することで、属性を完全に保護することが不可欠です。

データベースの暗号化は索引付けに部分的に対応しています。多くの場合、属性値から抽出される索引ファイルの内容も、攻撃者が索引の分析によって暗号化データの一部または全部を復元しないように暗号化されます。

サーバーは、暗号化された属性の索引を参照する前に、すべての索引キーを事前に暗号化します。この処理は、暗号化された索引を利用する検索のサーバー・パフォーマンスに多少影響します。ただし、パフォーマンスの影響は限られているため、索引の使用を妨げることはありません。

Oracle Unified Directoryでは、次の索引タイプを関連する暗号化属性に使用できます。

  • 等価

  • 部分文字列

  • 近似

  • プレゼンス

ノート:

暗号化の技法では、索引の順序が維持されないことに注意する必要があります。したがって、属性の暗号化の際に索引の順序指定はサポートされません。

暗号化は、DBローカル・バックエンドの索引のみでサポートされています。索引のキーは暗号化された属性用に暗号化されます。

14.5 レプリケーション・トポロジの暗号化の理解

レプリケーション・トポロジの暗号化では、レプリケーション・サーバーのデータベースに格納された暗号化データを参照します。

次の各トピックでは、レプリケーション・トポロジで暗号化がどのようにサポートされているかについて学習します。

14.5.1 レプリケーション・サーバーのデータベース(またはchangelog)での暗号化の理解

Oracle Unified Directoryでは、レプリケーション・サーバーのデータベース(changelogとも呼ばれる)、およびcn=changelog (external changelogまたはretro-changelogとも呼ばれる)で暗号化をサポートしています。Oracle Unified Directoryはサーバー・データベースに対する方法と同じ方法でレプリケーション・サーバーのデータベースのデータを暗号化します。追加の構成は必要ありません。暗号化の有効化と無効化、暗号化の属性の定義および暗号化の接尾辞の定義は、どちらのデータベースに対しても同じです。

レプリケート・トポロジの一部であるサーバーで操作を実行する場合、およびその変更が暗号化された属性に関連付けられている場合、Oracle Unified Directoryでは、サーバーでの暗号化に使用されるアルゴリズムと同じアルゴリズムを使用してレプリケーション・サーバーのデータベース(cn=changelogから読取り可能なchangelog)のデータを暗号化します。

Oracle Unified Directoryがレトロ変更ログ(cn=changelog)にアクセスする場合(cn=changelogはchangelogにアクセスします)、レトロ変更ログは常にクリア値を返します。暗号化は保存時、つまり、安定したストレージ(ハード・ディスク)でのみ行われます。

14.5.2 レプリケーション・トポロジの属性暗号化キーの理解

暗号化に使用されるキーは、作成および格納され、cn=admin dataから取得されます。この接尾辞は、トポロジ内の他のすべてのサーバーにレプリケートされます。

したがって、トポロジ内のすべてのサーバーで、暗号化された属性を復号化し、LDAPクライアントに送信できます。つまり、暗号化または復号化アルゴリズムに使用されるキーは、cn=admin dataがレプリケートされるため、トポロジ全体でレプリケートされます。

暗号化で使用される格納された対称キーは、サーバーが秘密キーを使用してのみ復号化できます。したがって、ads-truststore証明書を更新するときは、同じキーを保持する必要があります。

ノート:

Oracle Directory Server Enterprise Editionからゲートウェイを使用している場合は、「ODSEEゲートウェイの使用」を参照してください。

14.5.3 11.1.2.2.0からのサーバーの更新

バージョン11.1.2.2.0のレプリケートされたサーバーのトポロジをバージョン11.1.2.3.0に更新する場合、すべてのサーバーの更新が完了するまで、すべてのレプリケーション・サーバーのデータベースで暗号化は行われません。

また、変更ログから暗号化されていない値が確実になくなるようにパージ遅延の期間が過ぎるまで待機する必要があります。

14.5.4 ODSEEゲートウェイの使用

このトピックでは、ODSEEゲートウェイの使用方法について学習します。Oracle Directory Server Enterprise Editionでは、一部の属性をバックエンドで暗号化できますが、変更ログではできません。

Oracle Unified Directoryバージョン11.1.2.3.0以降では、Oracle Directory Server Enterprise Editionからゲートウェイを使用している場合、Oracle Unified Directoryトポロジの他のサーバーのようにそのゲートウェイを構成できます。

レプリケーション・ゲートウェイを介してOracle Directory Server Enterprise Editionサーバーから送信される変更が暗号化された属性に関連付けられている場合(通常のOracle Unified Directoryサーバーの場合と同様に構成によって定義される)、Oracle Unified Directoryはそのデータを暗号化し、レプリケーション・サーバーのデータベースに格納できます。

14.6 属性の暗号化の使用に関する考慮事項

属性の暗号化、属性の暗号化の構成が変更された場合にどのようなことが発生するか、および暗号化される属性に索引が付いている場合に必要な処理について学習します。

属性の暗号化機能を実装するときには、次の点を考慮してください。

  • 属性を暗号化することでデータのセキュリティが向上しますが、システムのパフォーマンスにも影響を及ぼします。暗号化は、センシティブ属性にのみ使用することを検討してください。

  • 属性の暗号化構成を変更する場合、データをエクスポートして構成を変更したうえで、新たに構成したデータをインポートする必要があります。これにより、情報が失われることなく、すべての構成の変更が考慮されます。これを行わない場合、バックエンドに前からある、データ暗号化の構成変更後変更のなかったデータが、初期のアルゴリズムによる構成に従って、クリアまたは暗号化形式で維持されます。

  • アルゴリズムの変更がサポートされています。索引付けされた属性で暗号化を変更するには、暗号化された属性に関連付けられた索引を再構築する必要があります。これも、パフォーマンスに影響します。索引の再構築の詳細は、「rebuild-index」を参照してください。

  • 索引が付けられた暗号化済属性の場合、索引とデータ暗号化の構成間で整合性を維持する必要があります。暗号化された属性の構成を変更または更新する場合、暗号化された属性に関連付けられた索引を再構築する必要があります。これを行わない場合、構成が変更されたために索引を再構築することを求めるエラー・メッセージがエラー・ログ・ファイルに記録されます。索引を再構築する方法の詳細は、「rebuild-index」を参照してください。

  • 暗号化するRDNの属性を構成する場合、DNに表示される値は暗号化されません。エントリに格納される値のみが暗号化されます。

    たとえば、次のエントリについて考えてみます。

    dn: uid=foo,dc=example,dc=com
    objectclass: inetorgperson
    objectclass: organizationalperson
    objectclass: person
    objectclass: top
    uid=foo
    cn=bar
    sn=joe
    

    ここで、uidは次の属性です。

    • エントリのDNの一部で、そのエントリのRDN。

    • エントリの属性の一部。RDNは常にエントリ内に属性として存在するため、この状況が常に存在することを覚えておく必要があります。

    ただし、uidは複数値の属性であるため、次のようにエントリ内のuidに値を追加できます。

    dn: uid=foo,dc=example,dc=com
    objectclass: inetorgperson
    objectclass: organizationalperson
    objectclass: person
    objectclass: top
    uid=foo
    uid=secondValue
    cn=bar
    sn=joe
    

    これで、uidを暗号化すると、追加した新しい値は暗号化され、初期値のfooは暗号化されません。RDN内の値は暗号化されません。

  • 次の属性は、サーバーで内部的に使用されるため暗号化を構成できません。

    操作属性

    • objectclass

    • entryUUID

    • creatorsName

    • createTimestamp

    • modifiersName

    • modifyTimestamp

    仮想属性

    仮想属性は暗号化用に構成できません。

    パスワード属性

    パスワードはすでにハッシュまたは暗号化されているため、属性の暗号化機能を使用して、パスワード・ポリシーに定義されているパスワード属性の既存の動作を変更したり、暗号化を構成することはできません。たとえば、デフォルト・パスワード・ポリシーに定義されているuserPassword属性はサポートされません。

    パスワードの暗号化とハッシュは、別々に処理されます。パスワード・ポリシーとパスワード記憶スキームの詳細は、「パスワード・ポリシーの管理」を参照してください。

14.7 属性の暗号化の構成

属性の暗号化を有効にするには、様々なパラメータを構成する必要があります。

次の各項では、属性の暗号化を有効にする構成パラメータと、属性の暗号化を構成する様々な方法について説明します。

14.7.1 属性の暗号化の構成パラメータ

属性の暗号化の構成パラメータ、それらの名前、説明、使用できる値と形式、および指定された値に基づいてアクションを実行するためのルールについて学習するには、次の表の列を参照してください。

表14-1は、属性の暗号化を有効にする構成パラメータを説明しています。

表14-1 属性の暗号化の構成パラメータ

名前 説明 単一/複数値 形式 プレゼンスのルール

enabled

暗号化を有効化または無効化できます。

S

ブール値、trueまたはfalseを表す文字列

trueに設定した場合、少なくともattribute-encryption-includeを定義する必要があります。

attribute-encryption- include

ここに定義されたすべての属性が暗号化されます。すべての接尾辞のすべてエントリの属性が暗号化されます。encrypted-suffixが定義された場合には、ここで定義された接尾辞にあるもののみが暗号化されます。

M

1つの属性名またはOIDを表す文字列

enabledtrueに設定された場合に定義されます。

encrypted-suffix

接尾辞に暗号化を適用する方法を制御します。

  • 存在しない場合、DBローカル・バックエンドに格納されている接尾辞に暗号化が適用されます。

  • 存在する場合、暗号化が適用されるユーザーDBローカル・バックエンド接尾辞のリストを定義します。他の接尾辞は暗号化されません。

警告: この接尾辞はバックエンドに定義されているルートの接尾辞にする必要があり、子の接尾辞は使用できません。たとえば、バックエンドにサポートされている接尾辞としてdc=example,dc=comが定義されている場合、ou=people,dc=example,dc=comをここで使用することはできません。

M

1つの接尾辞を表す文字列

enabledtrueに設定された場合に有効になります。

attribute-encryption- algorithm

暗号化に使用するアルゴリズムを定義します。

S

暗号化アルゴリズムを表す文字列。

有効な値は次のとおりです。

  • triple-des-168

  • aes-128

  • aes-256

  • blowfish-128

  • rc4-128

  • aes-128-gcm
  • aes-192-gcm
  • aes-256-gcm

ノート:

次のアルゴリズム(aes-128-gcm、aes-192-gcmおよびaes-256-gcm)は、10月21日のバンドル・パッチ以降のリリースに適用できます。

enabledtrueに設定された場合に有効になります。

14.7.2 属性の暗号化の拡張構成パラメータ

このリリースでは、offline-reencryptionを除く次の構成パラメータが、スケジュール済タスクを使用した属性の暗号化に適用されます。

OUDバンドル・パッチ12.2.1.4.211008以降のリリース。 このコンテンツは、OUDバンドル・パッチ12.2.1.4.211008以降のリリースにのみ適用されます。

表14-2 属性の暗号化の表

名前 説明 単一/複数値 形式 プレゼンスのルール
encryption-properties ビット単位の初期化ベクトル長(iv-length-bits=128)およびGCMタグ長(gcm-tag-length=12)のカスタム値を構成するために使用できるオプションの暗号化プロパティ。値を指定しない場合、OUDは96 bit ivを使用し、GCMを選択した場合はtag lengthに16を使用します。 M

文字列は、名前と値を持つ単一のプロパティを表します。たとえば、iv-length-bits=96です

ivおよびtag lengthをサポートする暗号化アルゴリズム(GCMなど)に意味があります
use-defined-enc-algo-in-replication レプリケーション変更ログの生成に使用される暗号化アルゴリズムを制御します。新しいOUDインスタンスおよび古いOUDインスタンスを含むバージョン間トポロジでは、古いOUDのインスタンスが新しいアルゴリズムを理解していない場合、この値はfalse (デフォルト設定)に設定されます。

Trueは、OUDのすべてのインスタンスが同じバージョンを実行している場合、定義された暗号化スキームを使用して、変更ログが生成され、他のOUDインスタンスに公開されることを指定します。
S 文字列は、ブール値trueまたはfalseを表します。

14.7.3 dsconfigコマンドを使用した属性の暗号化の構成

属性の暗号化を構成するために、dsconfigコマンドを使用します。

ユーザーDBローカル・バックエンド・ルート接尾辞のdc=customers,dc=comおよびdc=partners,dc=comのエントリで、AES-128アルゴリズムを使用し、postalAddressおよびmail属性のすべてに暗号化を実行するシナリオについて考えます。

dsconfigコマンドを使用して属性の暗号化を構成するには:

  1. 次のコマンドを順番に実行します。

    dc=customers,dc=com接尾辞でのpostalAddress属性に対するAES-128アルゴリズムを使用した属性の暗号化を構成するには、次のコマンドを実行します:

    dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" \
    -j /local/password set-data-encryption-prop --set enabled:true \
    --set attribute-encryption-include:postalAddress \
    --set encryption-algorithm:aes-128 \
    --set encrypted-suffix:dc=customers,dc=com
    

    ノート:

    暗号化アルゴリズムをaes-128として指定せず、バンドル・パッチ・リリース12.2.1.4.211030以上を使用している場合、デフォルトの暗号化アルゴリズムはaes-256-gcmです。aes-256-gcmアルゴリズムは、バンドル・パッチ12.2.1.4.211030以上にのみ適用されます。

    mail属性に属性の暗号化を追加し、dc=partners,dc=com接尾辞に暗号化を追加するには、次のコマンドを実行します:

    dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" \
    -j /local/password \
    set-data-encryption-prop --add attribute-encryption-include:mail \
    --add encrypted-suffix:dc=partners,dc=com \
    

14.7.4 dsconfig対話モードを使用した属性の暗号化の構成

dsconfigコマンド行の対話モードを使用して、属性の暗号化を構成できます。

メインの「セキュリティ」メニューにある「データ暗号化」サブセクションの概要説明によって、表14-1に説明されているすべての構成属性の変更が可能になります。

対話モードのdsconfigコマンドを使用して属性の暗号化を構成する場合は、次の例を参考にしてください。

Oracle Unified Directory Configuration Console Main Menu
What do you want to configure?

    1)  General Configuration            7)   Virtualization
    2)  Authentication and authorization 8)   Load Balancing
    3)  Schema                           9)   Distribution
    4)  Replication                      10)  Integration
    5)  Local Data Source                11)  Http
    6)  Remote Data Source
 
    q)  quit
 
Enter choice: 2
Authentication and authorization Management Menu

What would you like to do?

    1)  Access Control Group Plugin  8)  Password Policy Import
    2)  Access Control Handler       9)  Password Storage Scheme
    3)  Crypto Manager              10)  Password Validator
    4)  Data Encryption             11)  Root DN
    5)  Key Manager Provider        12)  SASL Mechanism Handler
    6)  Password Generator          13)  Trust Manager Provider
    7)  Password Policy
         
    b)  back
    q)  quit
 
Enter choice [b]: 4

Configure the Properties of Data Encryption

Property                           Value(s)
------------------------------------------------------------------
1)  attribute-encryption-include   description, givenname, mobile
2)  enabled                        true
3)  encrypted-suffix               "dc=example,dc=com"
4)  encryption-algorithm           aes-128

?)  help
f)  finish - apply any changes to the Data Encryption
c)  cancel
q)  quit
 
Enter choice [f]: ?

Component name: Data Encryption

Data Encryption allows to configure attribute encryption.

Option Types:
 
 r -- Property value(s) are readable
 w -- Property value(s) are writable
 m -- The property is mandatory
 s -- The property is single-valued
 a -- Administrative action is required for changes to take effect

Property                      Options  Syntax
--------------------------------------------------
attribute-encryption-include  rw---    OID
enabled                       rw-s-    BOOLEAN
encrypted-suffix              rw---    DN
encryption-algorithm          rw-s-    ALGORITHM
---------------------------------------------------

14.7.5 属性の暗号化の管理

dsconfigコマンドを使用して、属性の暗号化を有効または無効にしたり、属性を変更および取得することができます。

次の各トピックでは、属性の暗号化を有効化および無効化する方法について説明します。

14.7.5.1 特定の接尾辞の属性に対する暗号化の有効化

この項では、ユーザーDBローカル・バックエンドのルート接尾辞dc=customers,dc=comおよびdc=partners,dc=comのエントリで、3DES-168アルゴリズムを使用し、postalAddressおよびmail属性のすべてに暗号化を実行するシナリオについて説明します。

次のコマンドを使用してpostalAddresに対する属性の暗号化を構成する手順は次のとおりです。

dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" \
-j /local/password \
set-data-encryption-prop --set enabled:true \
--set encryptedsuffix:dc=customers,dc=com \
--set attribute-encryption-include:postalAddress \
--set encryption-algorithm:triple-des-168 \

次のコマンドを使用してmailに対する属性の暗号化を構成する手順は次のとおりです。

dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" \
-j /local/password \
set-data-encryption-prop --add attribute-encryption-include:mail \
--add encrypted-suffix:dc=partners,dc=com \

dsconfigコマンドのset-data-encryption-propオプションを使用して、属性を構成できます。暗号化パラメータの詳細は、「dsconfig」を参照してください。

この例では、前述の2つのdsconfigコマンドを順番に使用して暗号化を構成します。詳細は、「dsconfigコマンドを使用した属性の暗号化の構成」を参照してください。

14.7.5.2 暗号化の無効化

次のdsconfigコマンドを使用して暗号化を無効にします。

dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" \
-j /local/password \
set-data-encryption-prop --set enabled:false \
14.7.5.3 特定のアルゴリズムを使用した特定の属性に対する暗号化の有効化

次のコマンドを使用して、mobile属性をAES-128アルゴリズムによって暗号化します。

dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" \
-j /local/password set-data-encryption-prop --set enabled:true \
--set attribute-encryption-include:mobile \
--set encryption-algorithm:aes-128 \
14.7.5.4 属性の変更

属性は、次のようにdsconfigコマンドとset-data-encryption-propサブコマンドを使用して変更できます。

dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" /
-j /local/password set-data-encryption-prop --set "enabled:true"

ノート:

set-data-encryption-propオプションの内容表示を行うには、dsconfig set-data-encryption-prop --helpを実行します。詳細は、「dsconfig」を参照してください。

14.7.5.5 属性のフェッチ

属性は、次のようにdsconfigコマンドとget-data-encryption-propサブコマンドを使用して読み取ることができます。

dsconfig -n -X -h localhost -p 1444 -D "cn=Directory Manager" /
-j /local/password get-data-encryption-prop

Property                     : Value(s)
-----------------------------:-------------------------------
attribute-encryption-include : description, givenname, mobile
enabled                      : true
encrypted-suffix             : "dc=example,dc=com"
encryption-algorithm         : aes-128

14.8 レプリケーション有効トポロジでの属性の暗号化の構成

属性の暗号化を指定してOUDトポロジを初期化できます。暗号化に使用されるキーは、キーストアではなくcn=adminデータ接尾辞に保存されます。この接尾辞は、トポロジのすべてのサーバーにレプリケートされます。そのため、暗号化された属性をクライアント・アプリケーションに送り返す前に任意のOUDインスタンスで復号化できます。

ノート:

属性の暗号化がすでに構成されているレプリケーション有効トポロジと、トポロジ内で暗号化された状態で格納されているすべてのエントリの属性データについて考えてみます。自己署名証明書を更新または再生成する場合(たとえば、証明書の有効期限が間もなく終了する場合)は、「dsreplication regenerate-certを使用した証明書の再生成」を参照してください。

カスタム証明書またはCA署名証明書を更新またはリセットするには、「dsreplication set-certを使用した証明書の指定」を参照してください。コマンド(dsreplication regenerate-certおよびdsreplication set-cert)によって、レプリケーション・トポロジの証明書をリセットするプロセスが自動化されます。

14.8.1 新しいレプリケート・トポロジ設定での属性の暗号化の構成

OUDバンドル・パッチ12.2.1.4.211008以降のリリース。 このコンテンツは、OUDバンドル・パッチ12.2.1.4.211008以降のリリースにのみ適用されます。

まったく新しいレプリケート・トポロジ設定で、属性の暗号化を構成できます。

次のステップに従います:

  1. dsconfigを使用して、すべてのインスタンスの属性の暗号化を構成します。「dsconfigコマンドを使用した属性の暗号化の構成」および「dsconfigdsconfigコマンドの対話モードを使用した属性の暗号化の構成」を参照してください。
  2. すべてのインスタンスのレプリケーションを有効にします。「dsreplicationによる2つのサーバー間のレプリケーションの有効化」を参照してください。

    ノート:

    スケジュール済の再暗号化タスクは、データが存在しないことを前提として、この新しいレプリケーション・トポロジ設定には適用されません。

14.8.2 既存のレプリケート・トポロジ設定での属性の暗号化の構成

レプリケートされたトポロジで実行されているOUDインスタンスの場合を考えてみます。属性をディスクに保存するときに属性の値を保護するには、属性の暗号化を定義する必要があります。新規作成されたエントリの属性データは、レプリケート・トポロジで暗号化されますが、既存エントリの属性データは安全に保存されません。

暗号化をすべてのエントリまたは属性データに適用するには、次のステップを実行する必要があります。

次のステップに従います:

  1. dsconfigを使用して、すべてのインスタンスの属性の暗号化を構成します。「dsconfigコマンドを使用した属性の暗号化の構成」および「dsconfigdsconfigコマンドの対話モードを使用した属性の暗号化の構成」を参照してください。
  2. 「既存のデータの暗号化または再暗号化」の説明に従って、既存のデータの暗号化を実行します。

14.9 既存のデータの暗号化または再暗号化

既存の環境では、属性の暗号化が新たに有効化されたり、暗号化アルゴリズムなどの既存の属性の暗号化関連の構成が変更されると、新しい暗号化構成に従ってバックエンドに存在する既存のデータの暗号化を実行する必要があります。

14.9.1 スケジュール済タスクを使用した既存のデータの暗号化または再暗号化

OUDバンドル・パッチ12.2.1.4.211008以降のリリース。 このコンテンツは、OUDバンドル・パッチ12.2.1.4.211008以降のリリースにのみ適用されます。

OUDサーバー・インスタンスで再暗号化スケジュール済タスクを構成することで、バックエンドに存在する既存のデータの暗号化を実行できます。スケジュール済タスクは、実行される特定のOUDサーバー・インスタンス上で必要なデータを暗号化します。

レプリケート・トポロジの場合、他のノード上のデータが暗号化されるように、レプリケーションを介して必要な属性の暗号化変更操作が他のノードにも公開されます。

次のステップに従います

  1. レプリケート・トポロジの場合、必要な属性の暗号化構成がすべてのOUDインスタンスに存在することを確認します。
  2. すべてのOUDインスタンスのバックアップを取得します。
  3. dsconfig create-task --type reencryptを使用して、再暗号化のスケジュール済タスクを構成します。
    
    Recurring Task ./dsconfig create-task -h <OUD_INSTANCE> -p <ADMIN_PORT> -D "cn=Directory Manager" -j /local/password -X --type reencrypt --backendID userRoot --recurringTask "* * * * *" --batch-size 10
    Schedule Task ./dsconfig create-task -h <OUD_INSTANCE> -p <ADMIN_PORT> -D "cn=Directory Manager" -j /local/password -X --type reencrypt --backendID userRoot --start 0
    

この方法では、OUDインスタンスを停止せずに既存のデータが暗号化されます。

バックエンドに多数のエントリがあることを考慮すると、再暗号化再帰タスクをスケジュールできます。再暗号化は、スケジュールに従って構成された間隔でバッチで実行することをお薦めします。バックエンドのエントリが少ないことを考慮すると、1回のスケジュール済タスクをスケジュールできます。すべてのエントリは、単一のタスクの一部として一度に再暗号化することを目的としています。

どのクライアントからのLDAP問合せも再暗号化が完了するまで処理されないように、OUDインスタンス上でタスクを構成することをお薦めします。このインスタンスは、レプリケーション・トポロジには含まれますが、ロード・バランサには含まれません。これは次のいずれかの方法で行うことができます:
  1. 既存のロード・バランサから1つのノードを削除する場合。
  2. この目的専用の新しいインスタンスを作成する場合。
14.9.1.1 再暗号化用のスケジュール済タスク

再暗号化用のスケジュール済タスクは、渡されたパラメータに基づいてすべてのエントリを再暗号化します。タスクが正常に完了すると、ステータスは、再帰タスクの場合は「正常に完了し、繰返しタスクが停止しました」、スケジュール済タスクの場合は「正常に完了しました」とマークされます。

使用方法

dsconfig create-task {options}

グローバル・オプションについては、dsconfig --helpを参照してください。

ノート:

dsconfig create-taskの対話型モードは現在サポートされていません。したがって、次に示すような完全なコマンドを使用します。

サブコマンド・オプション

表14-3 タスクの作成オプション

オプション 説明
--type {type} 作成するタスクのタイプを指定します。

ノート:

現在、再暗号化タイプのみがサポートされています。
-t, --start {startTime} この処理がサーバー・タスクとしてスケジュールされている場合、UTC時間の場合はYYYYMMDDhhmmssZで、ローカル時間の場合はYYYYMMDDhhmmssで表記した処理の開始日時を示します。値'0'は、タスクを即時実行するようにスケジュールします。このオプションが指定された場合、操作は指定の時間に開始するようスケジュールされ、その直後にユーティリティが終了します。
--recurringTask {schedulePattern} タスクは再帰的であり、crontab(5)互換の時間および日付パターンで表記される値引数に従ってスケジュールされることを示します。
--batch-size {batchsize} 再暗号化に使用されるバッチ・サイズを表します。
--backendID {backendName} 再暗号化するバックエンドのバックエンドIDを表します。
--completionNotify {emailAddress} タスク終了時に通知される受信者の電子メール・アドレスを表します。このオプションは、複数回指定できます。
--errorNotify {emailAddress} このタスクの実行時にエラーが発生した場合に通知される受信者の電子メール・アドレスを表します。このオプションは、複数回指定できます。
--dependency {taskID} このタスクが依存するタスクのIDを表します。タスクのすべての依存性が実行を完了するまで、タスクの実行は開始しません。
--failedDependencyAction {action} 依存タスクの1つが失敗した場合に、このタスクが実行する必要のあるアクションを表します。この値として、PROCESS、 CANCEL、 DISABLEのいずれか1つが指定されている必要があります。指定しなかった場合は、デフォルトでCANCELに設定されます。

再帰タスクとスケジュール済タスクの作成例は次のとおりです:

再帰タスクの作成

./dsconfig create-task -h <OUD_INSTANCE> -p <ADMIN_PORT> -D "cn=Directory Manager" -j /local/password -X --type reencrypt --backendID userRoot --recurringTask "* * * * *" --batch-size 10

スケジュール済タスクの作成

./dsconfig create-task -h <OUD_INSTANCE> -p <ADMIN_PORT> -D  "cn=Directory Manager" -j /local/password -X --type reencrypt --backendID  userRoot --start 20210830121500
14.9.1.2 スケジュール済タスクの管理

manage-tasksコマンドを使用して、すべての再暗号化タスクを表示できます:

./manage-tasks -h <OUD_INSTANCE> -p <ADMIN_PORT> -D "cn=Directory Manager" -j /local/password -n -s

出力

20210830043148359 ReEncrypt Completed successfully
ReEncryptTask-5f73a72c-7725-473f-89e8-3bc05f847d64 ReEncrypt Completed Successfully and stopped Recurring Task
ReEncryptTask-5f73a72c-7725-473f-89e8-3bc05f847d64-20210830043300000 ReEncrypt Completed successfully
ReEncryptTask-5f73a72c-7725-473f-89e8-3bc05f847d64-20210830043600000 ReEncrypt Completed successfully

管理タスクを使用したトラブルシューティング

トラブルシューティングには、manage-tasksコマンドを使用します。manage-tasksコマンドを使用して、スケジュール済の再暗号化タスクで再暗号化中にエラーが発生したかどうかを確認します。タスクのステータスは、再帰タスクの場合は「エラーで完了し、繰返しタスクが停止しました」、スケジュール済タスクの場合は「エラーが生成されて完了しました」になります。

すべての再暗号化タスクを表示するには、manage-tasksコマンドを使用します:

./manage-tasks -h <OUD_INSTANCE> -p <ADMIN_PORT> -D "cn=Directory Manager" -j /local/password -n -s

出力

ReEncryptTask-7ec1bab7-d971-44bb-b780-ea5c803dcd4f ReEncrypt Completed with errors and stopped Recurring Task
ReEncryptTask-7ec1bab7-d971-44bb-b780-ea5c803dcd4f-20210830032400000 ReEncrypt Completed with errors
ReEncryptTask-7ec1bab7-d971-44bb-b780-ea5c803dcd4f-20210830032500000 ReEncrypt Completed with errors
詳細を表示するには、次のコマンドを使用します:
./manage-tasks -h <OUD_INSTANCE> -p <ADMIN_PORT> -D  "cn=Directory Manager" -j /local/password -n -i "ReEncryptTask-7ec1bab7-d971-44bb-b780-ea5c803dcd4f-20210830032400000"

前述のコマンドは、タスクのログ・メッセージおよび実行中に失敗したエントリを表示します:

ReEncrypt Options
-----------------------------------------------------------------------
ds-task-reencrypt-failed-dn uid=user.1,ou=People,dc=example,dc=com
uid=user.5,ou=People,dc=example,dc=com
dc=example,dc=com:3,6,9
ds-task-reencrypt-backend-id userRoot
objectclass ds-recurring-task
ds-tasktopds-task-reencrypt
ds-task-reencrypt-creation-time 20210830032400Z
ds-task-reencrypt-batch-size 10

Last Log Message
------------------------------------------------------------------------------
[30/Aug/2021:03:24:00 +0000] severity="NOTICE" msgCount=11 msgID=9896350 message="ReEncrypt task
ReEncryptTask-7ec1bab7-d971-44bb-b780-ea5c803dcd4f-20210830032400000 finished execution"

エラーの場合は、ログでエラーの根本原因を調べ、新しい再暗号化タスクを再スケジュールして、失敗したエントリが再暗号化のために再試行されるようにすることをお薦めします。

再暗号化(再暗号化タスク経由)が一部のサフィックスのみを対象としてスケジュールされている場合、サーバーの起動時にサーバー・ログに警告メッセージが記録されます。

14.9.2 レプリケーションまたはインポートを使用した既存のデータの暗号化または再暗号化

この方法では、レプリケート・トポロジ内の既存のデータを暗号化するために、OUDインスタンスのダウンタイムが必要です。レプリケーションを使用して暗号化をすべてのエントリまたは属性データに適用するには、次のステップを実行する必要があります。

  1. インスタンスのいずれかに対してpre-external-initializationを実行します。「dsreplication」を参照してください。
  2. すべてのインスタンスまたは1つのインスタンスのどちらかに対してオフライン・インポートを実行して、他のインスタンスへのバイナリ・コピー、またはdsreplication initializeを実行します。「import-ldif」を参照してください。
  3. インスタンスのいずれかに対してpost-external-initializationを実行します。「dsreplication」を参照してください。

14.9.3 エクスポートまたはインポートを使用した単一インスタンス上の既存のデータの暗号化または再暗号化

レプリケートされないトポロジでエクスポートまたはインポートを使用して、単一インスタンス上で既存のデータの暗号化または再暗号化を実行できます。

  1. 次のいずれかの操作を行います。
    • バックエンドに存在する既存のデータを暗号化用に構成する場合は、LDIFスクリプトを使用してデータをエクスポートします。
      export-ldif -n userRoot -l /data/export.ldif
      LDIFへのエクスポートの詳細は、「export-ldif」を参照してください
    • 新規の暗号化構成を考慮し、今後の変更のみが必要な場合は、ステップ4に進んでください。
  2. 次のステップを実行して、データを再度インポートし、停止します。
    1. サーバーを停止します。
      stop-ds
    2. データをインポートします。
      import-ldif -n userRoot -l /data/export.ldif
      コマンド行からのインポートの詳細は、「import-ldif」を参照してください。

      ノート:

      インポートされたLDIFファイルでデータが暗号化されているかどうかに関係なく、import-ldifコマンドは、現在のサーバー構成の指定に従ってバックエンドにデータを保存します。このため、必要に応じてインポート・プロセスでデータを暗号化または復号化できます。たとえば、暗号化が構成されていないサーバーで、暗号化されたデータをインポートする場合に、暗号化されていないデータを保存できます。さらに、暗号化が構成されたサーバーにクリアLDIFファイルをインポートする場合に、暗号化されたデータを保存できます。

      現在の構成のアルゴリズムが常に使用されます。AES128暗号化データ・セットをRC4暗号化が構成されているサーバーにインポートする場合、データはRC4の構成で再度暗号化され保存されます。

    3. サーバーを起動します。
      start-ds
      データをインポートすると、索引も作成されます。したがって、ステップ4を行う必要はありません。
  3. 索引を再構築します。

    暗号化を構成する接尾辞に、対象となる属性の索引がある場合、それらの索引を再作成します。次のコマンドを実行します。

    たとえば、postalAddress属性に関連付けられた索引がいくつかある場合、次のコマンドを使用してインデックスを再構築します。

    rebuild-index -b dc=customers,dc=com -i postalAddress
    同様に、mail属性に関連付けられた索引がいくつかある場合、次のコマンドを使用してインデックスを再構築します。
    rebuild-index -b dc=customers,dc=com -i mail
    索引の再構築の詳細は、「rebuild-index」を参照してください。

14.10 ユースケースのシナリオ

OUDバンドル・パッチ12.2.1.4.211008以降のリリース。 このコンテンツは、OUDバンドル・パッチ12.2.1.4.211008以降のリリースにのみ適用されます。

属性の暗号化を使用する場合、特に、特定のリリースのOUDに新しい暗号化スキームが含まれる場合は、レプリケートされたトポロジが影響を受けることがあります。次のように、ユースケースのシナリオについて考えてみます:

14.10.1 複数のバージョンのOUDインスタンスを含む混合レプリケート・トポロジ

混合バージョンのトポロジは、最新バージョンのOUDで構成されており、古いバージョンのOUDで使用できない新しい暗号化スキームが含まれている可能性があります。このように複数のバージョンのOUDが含まれている混合バージョンのトポロジでは、すべてのOUDインスタンスを最新バージョンに移動した後に、最新の製品でリリースされている新しい暗号化スキームを構成することをお薦めします。ただし、このような混合バージョンのトポロジでは、新しい暗号化スキームと古い暗号化スキームの組合せを選択できます。

これには、構成プロパティuse-defined-enc-algo-in-replicationの値をfalseに設定する必要があります。この構成では、最新リリースのOUDサーバー・インスタンスは、すべての旧バージョンのOUDサーバーで理解されるAES-128暗号化アルゴリズムを使用して、変更ログや修正のイベントを生成します。

たとえば、OUD1インスタンスがデータ暗号化アルゴリズムAES-256の古いバージョンを使用して作成され、OUD2インスタンスがデータ暗号化アルゴリズムAES-256-GCMの新しいバージョンのOUDを使用して作成されるシナリオを考えてみます。このトポロジでは、OUD2は新しく導入された暗号化アルゴリズムを理解しますが、OUD1は新しい暗号化アルゴリズムの解読に失敗します。ここで、OUD2を変更すると、AES-256-GCMアルゴリズムを使用して変更ログ・イベントが生成され、同じものがOUD1にレプリケートされます。OUD1は、AES-256-GCMを使用して暗号化された変更ログの復号化に失敗します。

構成プロパティuse-defined-enc-algo-in-replicationfalseに設定されている場合、混合モード変更ログのこのような互換性の問題を回避するために、デフォルトのAES-128アルゴリズムを使用して暗号化されます。すべてのインスタンスが最新バージョンに移動されると、構成プロパティuse-defined-enc-algo-in-replicationtrueに設定され、レプリケーションで最新の構成済の暗号化アルゴリズムが使用されるようになります。

14.10.2 すべてのOUDインスタンスを含むレプリケート・トポロジが構成済の暗号化スキームをサポートする

レプリケート・トポロジには、異なるバージョンのOUDが含まれる場合があります。ただし、このトポロジでは、すべてのOUDインスタンスで構成済の暗号化スキームがサポートされます。管理者は、構成プロパティの値use-defined-enc-algo-in-replicationtrueに設定して暗号化された属性値を変更すると、構成済の暗号化アルゴリズムを使用して暗号化された修正または変更ログが生成されます。この変更ログは、レプリケーション・トポロジ内の他のOUDノードによって解釈され、同じ変更がリプレイされます。