建立 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 磁區的備份 Snapshot,則需要授權「備份」服務使用 Block Storage for VPC、VPC 的 Snapshot 及 Virtual Server for VPC 服務。 如需相關資訊,請參閱 建立備份服務的服務對服務授權

有關授權的更多資訊,請參閱 使用授權機制在服務之間授予存取權限使用者角色

在控制台中為客戶管理的加密建立服務間授權

當需要授權進行跨帳戶加密時,必須在擁有加密金鑰的目標帳戶中建立授權。

  1. 在IBM Cloud控制台中,前往管理 > 存取 (IAM)
  2. 從側面板按一下管理存取,然後選擇授權
  3. 在「管理授權」頁面上,按一下 建立
  4. 在裡面來源部分,選擇來源帳戶。 來源帳戶是要建立區塊儲存磁碟區的地方。
    • 如果目標是允許其他帳戶使用目標帳戶的 CRK,請選擇特定帳戶,並輸入 32 個字元長的帳戶 ID。 然後按下一步
    • 否則,選擇此帳戶。 然後按下一步
  5. 對於來源服務,選擇 Cloud Block Storage 從列表中。 按下一步
    1. 點選選擇範圍所有資源
    2. 下一步
  6. 針對目標服務,請從清單中選取 KeyProtect 清單中的選項。
  7. 請選擇「Reader」這個角色。
  8. 勾選此方框,以啟用由來源及相依服務委派的授權。
  9. 點選審查並檢查您的選擇。
  10. 按一下授權

在控制台中建立跨帳戶恢復的服務間授權

以下步驟授權一個帳戶的Block Storage服務使用另一個帳戶建立的快照來還原磁碟區。 這些步驟需要由擁有要共享的快照的帳戶執行。 接收帳戶必須確保其管理員使用者在 IAM 中具有 SnapshotRemoteAccountRestorer 角色,然後才能使用共享快照的 CRN 開始磁碟區復原。

  1. 在「管理授權」頁面上,按一下 建立
  2. 授予服務授權頁面上,選擇來源帳戶。
    1. 由於目標是允許使用其他帳戶的快照,因此選擇 「特定帳戶」
    2. 請輸入 32 個字元的帳戶 ID。
    3. 下一步
  3. 對於來源服務,請從清單中選擇 VPC Infrastructure Services。 按下一步
    1. 透過點選 “特定資源” 選擇範圍。
    2. 選取資源類型,然後選取 Block Storage for VPC.
    3. 下一步
  4. 對於目標服務,從清單中選擇 VPC 基礎架構服務
    1. 透過點選 “特定資源” 選擇範圍。
    2. 點擊「選取一項屬性」。
    3. 從清單中選擇資源類型
    4. 在下一個欄位中,選擇 VPC 的Block Storage快照
    5. 如果您想要限制對特定快照的授權,請按一下「新增條件」
      1. 按一下選擇屬性並選擇快照 ID
      2. 請輸入快照的 ID。 按下一步
  5. 請選擇「Snapshot Remote Account Restorer」這個角色。
  6. 點選審查並檢查您的選擇。
  7. 按一下授權

從 CLI 建立客戶管理加密的服務對服務授權

執行 ibmcloud iam authorization-policy-create 指令,為 Block 服務建立授權政策,以便其與金鑰管理服務 ( 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 之間建立授權政策。

  1. 在本機 Documents 資料夾中建立一個包含以下授權策略資訊的 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",
    }'
    
  2. 然後,使用 JSON 檔案執行以下 CLI 命令。
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    
    跨帳戶授權是單向的,並且特定於密鑰和服務。 當帳戶 A 授權帳戶 B 的檔案服務使用其金鑰時,帳戶 B 可以使用帳戶 A 的 CRK 來加密帳戶 B 的共用。 但是,帳戶 A 無法使用帳戶 B 的根金鑰來加密帳戶 A 的共用。

從 CLI 建立跨帳戶復原的服務到服務授權

當需要授權進行跨帳戶資料還原時,授權必須在擁有快照的目標帳戶中建立。 執行 ibmcloud iam authorization-policy-create 指令,授權來源帳戶的 Block Storage 服務使用目標帳戶建立的快照來還原磁碟區。 接收帳戶必須確保其管理員使用者在 IAM 中具有 SnapshotRemoteAccountRestorer 角色,然後才能使用共享快照的 CRN 開始磁碟區復原。

  1. 在本機 Documents 資料夾中建立一個包含以下授權策略資訊的 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":"*"}]}],
    }'
    
  2. 然後,使用 JSON 檔案執行以下 CLI 命令。
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    

使用 API 為客戶管理的加密建立服務對服務授權

IAM 政策管理 API 發出請求,以建立來源卷宗的區塊服務與金鑰管理服務實例進行互動所需的服務對服務授權。

  • 下列範例顯示如何授權「區塊」服務 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 中擁有客戶根金鑰的帳戶提出。

  • 以下範例展示如何授權 Block 服務 is.server-protect 一個帳戶(來源)與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 服務使用目標帳戶建立的快照來還原磁碟區。 此呼叫需要由擁有快照的帳戶發出。 接收來源帳戶必須確保其 admin 使用者在 IAM 中擁有 SnapshotRemoteAccountRestorer 角色,才能使用共用快照的 CRN 開始磁碟區還原。

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 建立跨帳戶加密的服務到服務授權

  1. Terraform 支援配置兩個不同的帳戶IBM提供者。 沒有別名的提供者會被視為預設提供者。 請參閱以下範例,其中指定了兩個 IBM 帳戶,而第二個帳戶使用別名 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提供者

  2. 若要在一個帳戶的金鑰管理服務與另一個帳戶中的區塊儲存服務之間建立 IAM 授權,請使用下列資源 ibm_iam_authorization_policy。 以下範例是在 Key Protect 服務與兩個帳戶的檔案服務之間建立授權關係。

    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 建立服務到服務授權

  1. 為 IBM 提供者設定兩個 IBM 帳戶。 請參閱上一節的範例。

  2. 若要為一個帳戶的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

後續步驟