シークレットのレプリケート

リージョン間のシークレットのレプリケートについて学習します。

次の理由により、リージョン間でシークレットをレプリケートできます:

  • ディザスタ・リカバリ:シークレットをレプリケートすることで、地域が混乱した場合のアクセシビリティを確保できます。スタンバイ、フェイルオーバーおよびスイッチオーバー機能を持つシステムでは、スタンバイ・システムで使用可能なシークレットが必要な場合があります。
  • 可用性:複数のリージョンでシークレットを使用する場合、追加リージョンでシークレットをレプリケートすると、必要なリージョンでシークレットへのアクセスおよび更新が容易になります。複数のリージョンでのシークレットの使用に関する組織のセキュリティ・ガイドラインに必ず従ってください。

レプリケーションの仕組み

ボールトでシークレットを作成する場合、最大3つのリージョンでシークレットをレプリケートできます。シークレットを編集して、シークレットの作成後にレプリケーションを有効にすることもできます。シークレットのレプリカを作成する場合は、ターゲット・リージョン、そのリージョン内のターゲット・ボールト、およびシークレットに使用する暗号化キーを指定します。レプリカ・シークレットおよびシークレット・バージョンでは、ソース・シークレットおよびシークレット・バージョンと同じOCIDsが使用されます。レプリカのシークレットは、テナンシのシークレットに対するリージョン制限の目的で、ソース・シークレットとともにカウントされます。

レプリケーションを有効にすると、OCIは次のものをレプリケートします。

  • 秘密の内容
  • シークのメタデータと設定
  • シークエント・バージョン

レプリカは読取り専用であり、編集できません。ソース・シークレットを編集または削除すると、変更または削除操作もシークレットのレプリカに適用されます。レプリカがあるシークレットで機能を無効にすると、レプリカが削除されます。ソース・シークレットを編集することで、ソース・シークレットを保持しながらレプリカを個別に削除することもできます。

作業リクエストを使用して、進行状況クロス・リージョン・レプリケーション操作をモニターできます。シークレット・サービスでの作業リクエストの使用の詳細は、「シークレット作業リクエスト」を参照してください。

シークレット・レプリカを管理するには、次の手順を使用します:

重要

シークレットは、ボールト・レプリケーション中に自動的にレプリケートされません。シークレット・レプリケーションは、シークレット・リソースのレベルで管理する必要があります。ボールト・レプリケーションの詳細は、ボールトおよびキーのレプリケートを参照してください。

レプリカ・シークレットでの更新操作の書込み転送

オプションで、APIまたはCLIを使用して、レプリケートされたシークレットの書込み転送を有効にできます。レプリケートされたシークレットは読取り専用ですが、書込み転送では、書込み操作のレプリケートされたシークレットをターゲット指定し、最初にその操作をソース・シークレットに自動的に適用し、次に非同期更新を使用して、すべてのソース・シークレットのレプリカに適用できます。

たとえば、米国東部(アッシュバーン)リージョンに、日本東部(東京)リージョンでレプリケートされるソース・シークレットがある場合、レプリカ・シークレットを日本東部(東京)でターゲットにして更新できます。その後、更新リクエストは米国東部(アッシュバーン)のソース・シークレットに転送され、そのシークレットに対して自動的に実行されます。ソース・シークレットが更新されると、更新リクエストは、日本東部(東京)のレプリカを含むすべてのソース・シークレットのレプリカに自動的に適用されます。

制限事項

シークレットの安全性とセキュリティを確保するための書込み転送機能には、次の制限が適用されます。

  • 次の操作には書込み転送を使用できません。

    • シークレット削除のスケジューリング
    • シークレットの削除の取消し
    • ソース・シークレットのレプリケーション構成の更新
  • 新しいシークレットを作成する場合、書込み転送を有効にできますが、書込み転送機能を使用してソース・シークレットを保持するリモート・リージョンのボールトを指定することはできません。
  • 書込み操作は非同期的に実行され、最初にソース・シークレットに更新が適用されるため、レプリカで更新を開始してから、レプリカのリージョンで更新が完了するまでの遅延が発生します。作業リクエストを使用して、更新の進行状況をモニターできます。シークレット・サービスでの作業リクエストの使用の詳細は、「シークレット作業リクエスト」を参照してください。
  • レプリカのリージョンで更新をリクエストするエンティティは、ソース・シークレットのリージョンおよびレプリカが存在するリージョンで更新を実行する権限が必要です。
  • OCIコンソールで書込み転送を有効にすることはできません。これらの操作には、CreateSecret APIおよびUpdateSecret APIまたはCLIコマンドを使用して、書込み転送を有効にします。APIで、isWriteForwardEnabledtrueに設定して機能を有効にします。

必須IAMポリシー

この項の権限情報を使用して、ユーザーまたはリソース・プリンシパルがシークレットのクロス・リージョン・レプリケーションを構成できるようにします。

レプリケーションの構成に必要な権限

シークレット・レプリケーション構成(replicationConfig)を作成または更新するには、ユーザーまたはリソース・プリンシパルにSECRET_REPLICATE_CONFIGURE権限が必要です。これは、manage secrets動詞に含まれています。

レプリケーションを有効にしてシークレットを作成するには、ユーザーまたはリソース・プリンシパルに次のすべての権限があることを確認します:

  • SECRET_CREATEKEY_ENCRYPTKEY_DECRYPTVAULT_CREATE_SECRET (CreateSecret APIの使用、またはコンソールまたはその他のインタフェースでのシークレットの作成用)。
  • SECRET_REPLICATE_CONFIGURE

レプリケーション構成を更新(または削除)するには、ユーザーまたはリソース・プリンシパルに次のすべての権限があることを確認します。

  • SECRET_UPDATE (UpdateSecret APIを使用したり、コンソールまたはその他のインタフェースでシークレットを更新する場合)。
  • SECRET_REPLICATE_CONFIGURE

サンプル・ポリシー

次のサンプル・ポリシーには、新規または既存のシークレットに対してクロス・リージョン・レプリケーションを有効にするために必要なすべてのリソースに対応する文があります:

Allow group Admins to manage secrets in compartment CompartmentName # for granting SECRET_CREATE, SECRET_UPDATE, SECRET_REPLICATE_CONFIGURE
Allow group Admins to use keys in compartment CompartmentName       # for granting KEY_ENCRYPT, KEY_DECRYPT
Allow group Admins to use vaults in compartment CompartmentName     # for granting VAULT_CREATE_SECRET
ノート

サンプル・ポリシー(manage secretsuse keysuse vaults)の認証動詞には、このトピックにリストされていない権限も含まれています。シークレットのIAMポリシーを記述する場合は、動詞とリソース・タイプの組合せの詳細を確認します。

クロス・リージョン・シークレット・レプリケーションを許可するためにリソース・プリンシパルが必要とする権限

レプリケーションがシークレットで有効になっている場合、レプリケーションを実行するには、そのリソース・プリンシパルにターゲット・リージョン・コンテキスト内の関連権限を指定する必要があります。

動的グループを設定する

ポリシー管理を容易にするために、レプリケートするシークレットの動的グループを設定することをお薦めします。次に、一致ルールの例を示します。

All {resource.type = 'vaultsecret', resource.compartment.id = '<compartment ID>'}

動的グループ照合ルールの詳細は、動的グループを定義するための照合ルールの記述を参照してください。

ポリシーの書込み

シークレット・レプリケーションでは、シークレットに属するvaultsecretリソース・プリンシパルに、ターゲット・リージョンでレプリカ・シークレットを作成および管理する権限が必要です。これらの権限は、SECRET_CREATEKEY_ENCRYPTKEY_DECRYPTVAULT_CREATE_SECRETおよびSECRET_REPLICATEです。

SECRET_REPLICATEは、クロス・リージョン・レプリケーション機能にのみ使用される権限であることに注意してください。SECRET_REPLICATEを付与すると、vaultsecretリソース・プリンシパルがターゲット・リージョンにレプリカを作成できます。

vaultsecretリソース・プリンシパルのサンプル・ポリシー

Allow dynamic-group VaultSecretDG to use secret-replication in compartment CompartmentName # for granting SECRET_REPLICATE
Allow dynamic-group VaultSecretDG to manage secrets in compartment CompartmentName         # for granting SECRET_CREATE
Allow dynamic-group VaultSecretDG to use vaults in compartment CompartmentName             # for granting VAULT_CREATE_SECRET
Allow dynamic-group VaultSecretDG to use keys in compartment CompartmentName               # for granting KEY_ENCRYPT, KEY_DECRYPT
ノート

  • サンプル・ポリシー(manage secretsuse keysuse vaults)の認証動詞には、このトピックにリストされていない権限も含まれます。シークレットのIAMポリシーを記述する場合は、動詞とリソース・タイプの組合せの詳細を確認します。
  • これらの権限は、ターゲット・リージョンのコンテキスト内で付与する必要があります。たとえば、ボールトIDコンテキスト変数を使用してアクセスを制限する場合は、指定された変数がターゲット・リージョンのボールトIDであることを確認します。
  • コンパートメントまたはシークレットで定義済タグを使用する場合は、use tag-namespaces権限をボールトシークレット動的グループにも付与してください。