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

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

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

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

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

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

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

  • 秘密の内容
  • シークレットのメタデータおよび設定
  • シークレットのバージョン

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

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

ノート

シークレット・レプリケーションが成功したか失敗したかを確認するには、ソース・シークレットの作業リクエストを確認してください。

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

重要

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

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

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

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

制限事項

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

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

    • シークレット削除のスケジューリング
    • シークレットの削除の取消し
    • ソース・シークレットのレプリケーション構成の更新
  • 新しいシークレットを作成する場合、書込み転送を有効にできますが、書込み転送機能では、リモート・リージョンのボールトをソース・シークレットの宛先としてサポートしていません。
  • 書込み操作は非同期に実行され、更新は最初にソース・シークレットに適用されるため、レプリカで更新を開始してからレプリカのリージョンで更新が完了するまでの遅延が予想されます。作業リクエストを使用して、更新の進行状況をモニターできます。シークレット・サービスでの作業リクエストの使用の詳細は、シークレット作業リクエストを参照してください。
  • レプリカのリージョンで更新をリクエストするエンティティには、ソース・シークレットのリージョンおよびレプリカが存在するリージョンで更新を実行する権限が必要です。
  • OCIコンソールで書込み転送を有効にすることはできません。書込み転送を有効にするには、これらの操作に対してCreateSecretおよび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リソース・プリンシパルに、ターゲット・リージョンでレプリカ・シークレットを作成および管理する権限が必要です。これらの権限は、KEY_ENCRYPTKEY_DECRYPTおよびVAULT_CREATE_SECRETです。

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


Allow dynamic-group SecretDG to use vaults in compartment CompartmentName             # for granting VAULT_CREATE_SECRET
Allow dynamic-group SecretDG to use keys in compartment CompartmentName               # for granting KEY_ENCRYPT, KEY_DECRYPT
Allow dynamic-group SecretDG to use tag-namespaces in tenancy                         # for granting USE TAG-NAMESPACES permission
ノート

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