クロステナンシのOCI KMSキーを使用したストレージ・リソースの暗号化 (2026/07/23)
クロステナンシのOCI KMSキーを使用したストレージ・リソースの暗号化 (2026/07/23)
https://www.ateam-oracle.com/using-cross-tenancy-oci-kms-keys-to-encrypt-storage-resources
投稿者:Kiran Thakkar | Master Principal Cloud Architect

はじめに
Oracle Cloud Infrastructure (OCI) の顧客は、運用上の所有権と鍵の所有権を分離する必要がある場合がよくあります。一般的な例としては、独立系ソフトウェアベンダー (ISV) が独自のテナントでストレージリソースを運用し、顧客が別のテナントで暗号化キーを管理するというケースが挙げられます。
この記事では、ある OCI テナント内のストレージ リソースを、別の OCI テナントに存在する Vault キーで暗号化できるように、テナント間アクセスを構成する方法について説明します。サービスとキーが同じリージョンにある場合、オブジェクト ストレージ バケットとブロック ボリューム リソースにも同様のパターンを使用できます。
シナリオ
この例では:
- A社はISV(独立系ソフトウェアベンダー)またはサービスプロバイダーです。同社はOCIテナント内でストレージリソースをホストおよび運用しています。
- 顧客BはA社が提供するサービスを利用しており、暗号化キーの所有権を保持したいと考えている。
- A社には、顧客Bが使用するストレージリソースを管理する管理者グループが存在する。
- 顧客Bは、これらのストレージリソースを暗号化するために使用されるVaultキーを作成し、所有します。
目標は、A社のストレージ管理者が、B社のVaultキーをA社のテナント内で管理されているストレージリソースに関連付けることができるようにすることであり、同時にB社は自社のテナント内でキーのライフサイクルを引き続き制御できるようにすることです。
参考値
| プレースホルダー | 説明 |
| テナントA | A社のテナントでは、ストレージリソースは |
| テナントB | 顧客Bのテナント。OCI Vaultキーが作成および管理される場所。 |
| ストレージ管理者チーム | A社のテナント内でストレージリソースを管理するIAMグループ。 |
| StorageAdminTeamGroupOCIDFromTenancyA | A社のテナントにおけるStorageAdminTeamグループのOCID。 |
| 顧客BコンパートメントOCID | 顧客Bのために管理されているストレージリソースを含む、A社のテナント内の区画のOCID。 |
| Kms_key_id | このユースケースのために顧客Bのテナントで作成されたVaultキーのOCID。 |
前提条件
- StorageAdminTeamグループを含むA社のテナント内のIDドメインは、アクセスが許可されるターゲットリージョンに複製されます。
- ストレージリソースとVaultキーは同じOCIリージョンに配置されています。これにより、リージョン間の依存関係やレイテンシの問題を回避できます。
- A社とB社はどちらも、ストレージリソースとキーが使用されるリージョンに加入しています。
- クロステナント OCI KMS キー アクセス 14 ページ 顧客 B は Vault キーを作成し、キー OCID を取得しました。
- A社は、顧客Bの鍵で暗号化するストレージリソースが格納されている区画を特定した。
A社のテナンシーにおける方針
クロステナントポリシーの観点から見ると、A社のテナントがソーステナントとなります。これらのポリシーは、A社のストレージ管理者グループが顧客B社のテナントでキーを使用および関連付けることを承認するものです。
Define tenancy TenancyB as <CustomerB_Tenancy_OCID>
Endorse group StorageAdminTeam to use key-delegate in tenancy TenancyB
Endorse group StorageAdminTeam to use keys in tenancy TenancyB
Endorse group StorageAdminTeam to associate buckets in compartment <CustomerBCompartmentOCID> with keys in tenancy TenancyB
Endorse group StorageAdminTeam to associate volumes in compartment <CustomerBCompartmentOCID> with keys in tenancy TenancyB顧客Bのテナンシーにおけるポリシー
顧客Bのテナントは、クロステナントポリシーの観点からターゲットテナントです。これらのポリシーは、会社Aの管理者グループを許可し、リージョンオブジェクトストレージサービスとブロックストレージサービスが指定されたキーを使用することを許可します。たとえば、リソースがサンノゼリージョンにある場合、オブジェクトストレージサービスのプリンシパルは objectstorage-us-sanjose-1 となります。
Define tenancy TenancyA as <CustomerA_Tenancy_OCID>
Define group StorageAdminTeam as <StorageAdminTeamGroupOCIDFromTenancyA>
Admit group StorageAdminTeam of tenancy TenancyA to use key-delegate in tenancy
Admit group StorageAdminTeam of tenancy TenancyA to read keys in tenancy
Allow service objectstorage-<region_identifier> to use keys in tenancy where target.key.id = '<Kms_Key_Id>'
Allow service blockstorage to use keys in tenancy where target.key.id = '<Kms_Key_Id>'
Admit group StorageAdminTeam of tenancy TenancyA to associate keys in tenancy with buckets in tenancy TenancyA
Admit group StorageAdminTeam of tenancy TenancyA to associate keys in tenancy with volumes in tenancy TenancyA実装オプション
テナント間ポリシーが設定されると、A社はサポート対象のストレージリソースを作成または更新する際に、顧客BのキーOCIDを提供できるようになります。
オブジェクトストレージ用のTerraform
OCI Terraformプロバイダーは、oci_objectstorage_bucketリソースのkms_key_id引数をサポートしています。上記のポリシーが構成されている場合、その値は顧客BのテナントのVaultキーのOCIDになります。
参照:https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/objectstorage_bucket
resource "oci_objectstorage_bucket" "customer_bucket" {
compartment_id = var.compartment_ocid
namespace = var.object_storage_namespace
name = var.bucket_name
kms_key_id = var.kms_key_id
}ブロックボリューム用のTerraform
OCI ブロックボリュームのプロビジョニングでは、KMS キー OCID の指定もサポートされています。クロス テナンシー IAM ポリシーが有効になっている場合、企業 A は暗号化ボリュームをプロビジョニングする際に、顧客 B のテナンシーからキー OCID を提供できます。
参照: https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/core_volumes
オブジェクトストレージとブロックボリューム用のOCI CLI
既存のオブジェクトストレージバケットとブロックボリュームを顧客BのKMSキーで更新するには、OCI CLIを使用します。
oci os bucket update --bucket-name "$BucketName" --kms-key-id "$Kms_Key_Id"
oci bv volume-kms-key update --volume-id "$Volume_Id" --kms-key-id "$Kms_Key_Id"
oci bv boot-volume-kms-key update --boot-volume-id "$Boot_Volume_Id"
--kms-key-id "$Kms_Key_Id"このコマンドは、承認ポリシーとアクセスポリシーによって、呼び出し元と地域オブジェクトストレージサービスが指定されたキーを使用することが許可されている場合にのみ成功します。
運用上の注意事項
- 鍵の所有権とストレージ管理の責任は明確に分離しておく必要があります。鍵は顧客Bが所有し、ストレージリソースはA社が運用します。
- ポリシーの適用範囲は可能な限り狭くしてください。可能な限り、特定の区分、グループ、および主要なOCIDを使用してください。
- ポリシーを適用する前に、リージョン固有のオブジェクトストレージサービスプリンシパルを検証してください。
- 本番環境のワークロードに適用する前に、非本番環境のバケットまたはボリュームを使用して構成をテストしてください。
- 顧客Bのテナント内での操作は、会社Aのテナント内の暗号化ストレージリソースに影響を与える可能性があるため、鍵のローテーション、鍵の無効化、およびインシデント対応に関する運用プロセスを文書化してください。
まとめ
OCIのクロステナントポリシーにより、テナント境界を越えて顧客が管理する暗号化キーをサポートすることが可能になります。適切な承認および承認ポリシーを設定することで、ISVは自社のテナント内でストレージリソースを運用しながら、顧客が暗号化に使用するKMSキーの管理権を保持できるようにすることができます。
この設計は、顧客がキーの所有権、コンプライアンス境界、または職務分掌をより厳密に管理する必要がある場合に特に有効です。同時に、別のOCI顧客がホストするマネージドサービスを利用することも可能です。
コメント
コメントを投稿