Block Storage for VPC のサービス間許可を確立しています
Block Storage for VPC と Key Protect の間で、 お客様暗号化のためのサービス間認証を設定するか、または自動スナップショット機能を利用するためにバックアップサービスとの間で認証を設定します。 必要なアクセス権限を付与するように、IAMの権限設定を行ってください。
概要
許可におけるソース・サービスとは、ターゲット・サービスへのアクセス権限を付与されたサービスです。 選択した役割によって、ソース・サービスのアクセス・レベルが定義されます。 ターゲット・サービスとは、割り当てる役割に基づいて、ソース・サービスがアクセスする許可を付与するサービスです。 通常、ソースサービスは、承認が作成されたアカウントと同じアカウントにある場合もあれば、別のアカウントにある場合もあります。 認可は、ターゲット・サービスを所有するアカウントで作成されなければならない。
お客様管理の CRK を使用して暗号化ボリュームを作成できるようにするには、ブロック・サービスと選択した鍵管理サービスの間でサービス間許可を確立する必要があります。
Hyper Protect Crypto Services は非推奨となっています。 顧客は既存のインスタンスを2027年3月20日まで使用できる。 詳細については、「 IBM Cloud Hyper Protect Crypto Services の非推奨化 」を参照してください。 継続的な保護のため、既存の暗号化キーを専用 Key Protect インスタンスに移行することをご検討ください。 詳細については、「 移行ガイド 」をご覧ください。
Block Storage for VPC ボリュームのバックアップ・スナップショットを作成する場合は、 Block Storage for VPC、VPC のスナップショット、および Virtual Server for VPC サービスを処理する権限がバックアップ・サービスに必要です。 詳しくは、 バックアップ・サービスのサービス間許可の設定 を参照してください。
認可に関する詳細については、 サービス間のアクセス権限を付与するための承認機能の利用 および ユーザーロール を参照してください。
コンソールで顧客管理暗号化のサービス間認証を作成する
クロスアカウント暗号化に認証が必要な場合は、暗号化キーを所有するターゲットアカウントで認証を作成する必要があります。
- IBM Cloud コンソールで、 [管理] > [アクセス (IAM)] に移動します。
- サイドパネルから[ Manage access]をクリックし、[ Authorizations]を選択します。
- 「許可の管理」ページで、作成をクリックします。
- の中にソースセクションで、ソースアカウント。 ソース・アカウントは、ブロック・ストレージ・ボリュームを作成する場所である。
- 別のアカウント対象アカウント CRKを使用させることが目的の場合、 特定アカウント を選択し、32文字のアカウント IDを入力する。 そして、「次へ (Next)」 をクリックします。
- それ以外の場合は、このアカウント。 そして、「次へ (Next)」 をクリックします。
- ソース・サービスのリストから、Cloud Block Storage を選択します。 **「次へ」**をクリックします。
- すべてのリソースをクリックしてスコープを選択します。
- 次へ をクリックします。
- 対象のサービスについては、 KeyProtect リストから選択してください。
- 「
Reader」という役割を選択してください。 - ソース・サービスおよび従属サービスによって許可が委任されるようにするには、このボックスにチェック・マークを付けます。
- クリックレビュー選択内容を確認します。
- 「許可」 をクリックします。
コンソールでのクロスアカウント・リストアのためのサービス間認証の作成
以下の手順では、あるアカウントの Block Storage サービスが、別のアカウントで作成されたスナップショットを使用してボリュームをリストアすることを許可します。 この手順は、共有されるスナップショットを所有するアカウントによって実行される必要があります。 受信側のアカウントは、共有スナップショットのCRNを使用してボリュームのリストアを開始する前に、管理ユーザーがIAMで SnapshotRemoteAccountRestorer ロールを持っていることを確認する必要があります。
- 「許可の管理」ページで、作成をクリックします。
- 「 サービスの承認を付与 」ページで、 アカウントを選択します。
- 別のアカウントからのスナップショットの使用を許可することが目的なので、特定のアカウントを選択します。
- 32文字のアカウント IDを入力してください。
- 次へ をクリックします。
- ソース・サービスは、リストから VPCインフラストラクチャ・サービスを選択します。 **「次へ」**をクリックします。
- 特定のリソースをクリックしてスコープを選択します。
- 「 リソースの種類 」を選択し、 Block Storage for VPC。
- 次へ をクリックします。
- 対象サービスのリストから、VPC Infrastructure Services を選択します。
- 特定のリソースをクリックしてスコープを選択します。
- 「 属性を選択 」をクリックします。
- リストから、リソースタイプを選択します。
- 次のフィールドで、Block Storage Snapshots for VPC を選択します。
- 認証を特定のスナップショットに制限したい場合は、条件を追加をクリックします。
- 属性を選択をクリックし、スナップショットID を選択します。
- スナップショットのIDを入力してください。 次へ をクリックします。
- 「
Snapshot Remote Account Restorer」という役割を選択してください。 - クリックレビュー選択内容を確認します。
- 「許可」 をクリックします。
CLI からのお客様管理の暗号化のためのサービス間許可の作成
ibmcloud iam authorization-policy-create コマンドを実行し、BlockサービスがKey Management Services( Key Protect )と連携するための認証ポリシーを作成します。 ソースサービスは server-protect で、ターゲットサービスは kms です。 割り当てる必要があるロールは「 Reader 」です。
次の例では、Blockサービスと Key Protect との間で認証ポリシーを作成します。
ibmcloud iam authorization-policy-create server-protect kms Reader
Creating authorization policy under account a1234567 as test.user@ibm.com...
OK
アカウントに対して既に設定されているサービス許可をリストするには、 ibmcloud iam authorization-policies コマンドを実行します。 次の例は、ブロックサービスがCRKで暗号化され、Key ProtectまたはHyper Protect Crypto Services 。
ibmcloud iam authorization-policies
Getting authorization policies under account a1234567 as test.user@ibm.com...
OK
ID: 1f722de4-c3e6-4765-b0d3-482ec77a04f8
Source service name: server-protect
Source service instance: All instances
Target service name: kms
Target service instance: 51042d7f-f0df-4915-bd39-6a49957c9175
Roles: Reader
このコマンドで利用可能なすべてのパラメーターについて詳しくは、ibmcloud iam authorization-policy-create を参照してください。
CLI からアカウント間暗号化のためのサービス間認証を作成する
クロスアカウント暗号化に認証が必要な場合は、暗号化キーを所有するターゲットアカウントで認証を作成する必要があります。 ibmcloud iam authorization-policy-create コマンドを実行し、 アカウント 「Block」サービスが、宛先アカウントのキー管理サービス( Key Protect )とやり取りするための承認ポリシーを作成します。 ソースサービスは server-protect で、ターゲットサービスは
kms です。 割り当てる必要があるロールは「 Reader 」です。 次の例では、Blockサービスと Key Protect との間で認証ポリシーを作成します。
- ローカルのドキュメント フォルダーに、承認ポリシーの次の情報を含む JSON ファイルを作成します。
'{ "description":"Reader and Delegator role for KeyProtect service instance", "resources": [ {"attributes":[ {"name":"Account-A-CRK","operator":"stringEquals","value":"<CRK-Account-A-ID>"}, {"name":"Hyper-Protect-Crypto-Services","operator":"stringEquals","value":"kms"}]}], "roles": [ {"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"}, {"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}], "subjects": [ {"attributes": [ {"name":"Cloud Block Storage","value":"server-protect"}, {"name":"Account-B","value":"<Account-B-ID>"}]}], "type":"authorization", }' - 次に、JSON ファイルを使用して次の CLI コマンドを実行します。
クロスアカウント認証は一方向であり、キーとサービスに固有です。 アカウント A が自分のキーをアカウント B のファイル サービスで使用することを承認すると、アカウント B はアカウント A の CRK を使用してアカウント B の共有を暗号化できます。 ただし、アカウント A はアカウント B のルート キーを使用してアカウント A の共有を暗号化することはできません。ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
CLIからのクロスアカウント・リストアのためのサービス間認証の作成
アカウント間のデータ復元に権限が必要な場合、スナップショットを所有するターゲット・アカウントで権限を作成する必要があります。 ibmcloud iam authorization-policy-create コマンドを実行して、ソースアカウントの Block Storage サービスに、ターゲットアカウントで作成されたスナップショットを使用してボリュームをリストアすることを許可する。 受信側のアカウントは、共有スナップショットのCRNを使用してボリュームのリストアを開始する前に、管理ユーザーがIAMで
SnapshotRemoteAccountRestorer ロールを持っていることを確認する必要があります。
- ローカルのドキュメント フォルダーに、承認ポリシーの次の情報を含む JSON ファイルを作成します。
'{ "type":"authorization", "description":"Providing the Block Storage service access to restore from a Snapshot of another account ", "subjects": [{"attributes": [ {"name":"Block Storage for VPC","value":"server-protect"}, {"name":"Remote-restorer-account","value":"<Remote-Restorer-Account-ID>"}]}], "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:SnapshotRemoteAccountRestorer"}], "resources": [{"attributes": [ {"name":"Snaphot-owner-account","operator":"stringEquals","value":"<Snapshot-Owner-Account-ID>"}, {"name":"snapshotId","operator":"stringEquals","value":"*"}]}], }' - 次に、JSON ファイルを使用して次の CLI コマンドを実行します。
ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
API を使用したお客様管理の暗号化のためのサービス間許可の作成
IAM ポリシー管理 API にリクエストを送信し、ソースボリュームのブロックサービスが Key Management Service インスタンスと連携するためのサービス間認証を作成します。
-
以下の例は、ブロック・サービス
is.server-protect(ソース) が Key Protect サービスkms(ターゲット) と リーダー 役割で対話することを許可する方法を示しています。curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{ "type":"access", "description":"Reader role for the Block service to interact with the KeyProtect service.", "subjects": [{"attributes":[{"name":"Cloud Block Storage","value":"server-protect"}]}], "roles":[{"role_id":"crn:v1:bluemix:public:iam::::role:Reader"}], "resources":[{"attributes": [{"name":"KeyProtect","value":"kms"}]}] }'
API を使用してアカウント間暗号化のためのサービス間認証を作成する
IAMポリシー管理APIに リクエストを送信し、 アカウント Block Storage サービスが、 アカウント Key Management Serviceインスタンスと連携するためのサービス間認証を作成します。 リクエストは、KMSで顧客のルート・キーを所有するアカウントから行う必要がある。
-
次の例は、ブロックサービスを承認する方法を示しています。
is.server-protect1つのアカウント(ソース)でHyper Protect Crypto Servicesサービスhs-crypto別のアカウント(ターゲット)の_読者_そして_承認委任者_役割。curl -X POST "https://iam.cloud.ibm.com/v1/policies" \ -H "Authorization: <Auth Token>" \ -H 'Content-Type: application/json' \ -d '{ "type":"authorization", "description":"Reader and Delegator access to KeyProtect service instance", "subjects": [ {"attributes": {"name":"Cloud Block Storage","value":"server-protect"}, {"name":"Account-B","value":"<Account-B-ID>"}]}], "roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"},{"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}], "resources": [ {"attributes":[ {"name":"Account-A-CRK","operator":"stringEquals","value":"<CRK-Account-A-ID>"}, {"name":"Hyper-Protect-Crypto-Services","operator":"stringEquals","value":"kms"}]}], }'
クロスアカウント認証は一方向であり、キーとサービスに固有です。 アカウント A が自分のキーをアカウント B のファイル サービスで使用することを承認すると、アカウント B はアカウント A の CRK を使用してアカウント B の共有を暗号化できます。 ただし、アカウント A はアカウント B のルート キーを使用してアカウント A の共有を暗号化することはできません。
APIを使ったクロスアカウント・リストアのためのサービス間認証の作成
以下のAPIリクエストは、ボリュームをリストアするためにターゲットアカウントで作成されたスナップショットを使用することを、ソースアカウントの Block Storage サービスに許可する。 この呼び出しは、スナップショットを所有するアカウントによって発行される必要があります。 受信元アカウントは、共有スナップショットのCRNを使用してボリュームの復元を開始する前に、IAMで管理ユー ザーが SnapshotRemoteAccountRestorer ロールを持っていることを確認する必要があります。
curl -X POST "https://iam.cloud.ibm.com/v1/policies"\
-H 'Content-Type: application/json\
-d '{
"type":"authorization",
"description":"Providing the Block Storage service access to restore from a Snapshot of another account ",
"subjects": [{"attributes": [
{"name":"BCloud Block Storage","value":"server-protect"},
{"name":"Remote-restorer-account","value":"<Remote-Restorer-Account-ID>"}]}],
"roles": [{"role_id":"crn:v1:bluemix:public:iam::::role:SnapshotRemoteAccountRestorer"}],
"resources": [{"attributes": [
{"name":"Snaphot-owner-account","operator":"stringEquals","value":"<Snapshot-Owner-Account-ID>"},
{"name":"snapshotId","operator":"stringEquals","value":"*"}]}],
}'
特定のスナップショットへのアクセスを制限したい場合は、リソースを定義する際に * の代わりにスナップショットIDを使用してください。
Terraform を使用したお客様管理の暗号化のためのサービス間許可の作成
main.tf ファイル内の ibm_iam_authorization_policy リソース引数を使用して、ブロック・サービスと鍵管理サービスの間に許可ポリシーを作成します。
以下の例では、適用時にブロック・サービスと Key Protect の間に許可ポリシーを作成します。
resource "ibm_iam_authorization_policy" "mypolicy4keyprotect" {
source_service_name = "server-protect"
target_service_name = "kms"
roles = ["Reader"]
}
引数および属性について詳しくは、 許可リソースの Terraform 資料を参照してください。
Terraform を使用したクロスアカウント暗号化のためのサービス間認証の作成
-
Terraformは、2つの異なるアカウントの設定をサポートしています。IBMプロバイダー。 エイリアスのないプロバイダーは、デフォルトのプロバイダーとみなされる。 以下の例を参照してください。ここでは2つの IBMアカウント指定されており、2番目のアカウントはエイリアスを使用しています
team_account。 その構成は次のように呼ばれる。ibm.team_account後で。terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = ">= 1.12.0" } } } provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region ibmcloud_timeout = var.ibmcloud_timeout } provider "ibm" { alias = "team_account" ibmcloud_api_key = var.ibmcloud_api_key_second_account region = var.region ibmcloud_timeout = var.ibmcloud_timeout }引数と属性の詳細については、以下を参照してください。IBM Cloudプロバイダー。
-
あるアカウントのキー管理サービスと別のアカウントのブロックストレージサービス間のIAM認証を作成するには、リソースを使用します。
ibm_iam_authorization_policy。 次の例では、 Key Protect サービスと、2つのアカウントのファイルサービスとの間で認証設定を行います。resource "ibm_iam_authorization_policy" "policy" { source_service_name = "server-protect" source_service_account = "<volume-account-id>" target_service_name = "kms" target_resource_instance_id = ibm_kms_key.key.instance_id roles = ["Reader", "Authorization Delegator"] description = "Authorization Policy" }このTerraformリソースにはプロバイダーエイリアスも含める必要があります(この例では、
ibm.team_account)アカウントibmcloud_api_key暗号化キーが属する場所。引数と属性の詳細については、以下を参照してください。ibm_iam_authorization_policy。
クロスアカウントリストアのためのサービス間認証の作成 Terraform
-
IBM プロバイダー用に2つの IBM アカウントを設定する。 前のセクションの例を参照してください。
-
あるアカウントの Block Storage サービスで、別のアカウントが作成したスナップショットを使用してボリュームをリストアするための IAM 認証を作成するには、リソース
ibm_iam_authorization_policyを使用します。resource "ibm_iam_authorization_policy" "policy" { source_service_name = "server-protect" source_service_account = "<volume-account-id>" target_service_name = "ibm_is_snapshot" target_resource_instance_id = ibm_is_snapshot.snapshot.instance_id target_service_account = "<snapshot-account-id>" roles = ["SnapshotRemoteAccountRestorer"] description = "Authorization Policy" }このTerraformリソースにはプロバイダーエイリアスも含める必要があります(この例では、
ibm.team_account)アカウントibmcloud_api_key暗号化キーが属する場所。引数と属性の詳細については、以下を参照してください。ibm_iam_authorization_policy。