IBM Cloud Docs
バックアップ・サービスに対するサービス間許可の確立

バックアップ・サービスに対するサービス間許可の確立

バックアップ・ポリシーを作成する前に、サービス間許可を設定し、ユーザー役割を指定する必要があります。 この許可により、Backup for VPC サービスは、ボリューム・タグを検出し、バックアップ・スナップショットを作成して Object Storageに保管することができます。

概要

IBM Cloud Backup for VPC サービスを機能させるには、サービスの許可を提供する必要があります。 許可におけるソース・サービスとは、ターゲット・サービスへのアクセス権限を付与されたサービスです。 選択した役割によって、ソース・サービスのアクセス・レベルが定義されます。 ターゲット・サービスとは、割り当てる役割に基づいて、ソース・サービスがアクセスする許可を付与するサービスです。 ソース・サービスは、許可が作成されたのと同じアカウントに含めることも、別のアカウントに含めることもできます。 ターゲット・サービスは常に、許可が作成されたアカウント内にあります。

バックアップ・ポリシーを作成し、バックアップ・ジョブが正しく実行されるようにするには、バックアップ・サービスに Block Storage for VPC、Snapshots for VPC、および Virtual Server for VPC の各サービスを処理する権限が付与されている必要があります。

エンタープライズ・アカウントおよびサブアカウントのバックアップ・ポリシーを作成するエンタープライズ・アカウント管理者は、サブアカウント内の Backup for VPC サービスを操作するために、エンタープライズ・アカウント内の Backup for VPC サービスに対する権限も持っている必要があります。

許可について詳しくは、 許可を使用したサービス間のアクセス権限の付与 を参照してください。

サービス許可を誤ってセットアップした場合、バックアップ・サービスはバックアップ・ポリシーを作成できません。 詳しくは、トラブルシューティングのトピック「 許可が正しくないためバックアップ・ポリシーが作成されない」を参照してください。

UI での許可ポリシーの作成

アカウント・レベルでのサービス間許可の有効化

サービス間許可ポリシーを作成するには、以下の手順を実行します。

  1. IBM Cloud コンソールで、**「管理 (Manage)」>「アクセス (IAM) (Access (IAM))」**と移動します。 「アクセス権限とユーザーの管理」 ページが表示されます。

  2. サイド・パネルから、権限を選択します。

  3. 許可の管理」ページで、作成をクリックします。

  4. サービス許可の付与 」ページで、ソース・アカウントを選択します。 アカウント内のバックアップ・サービスの許可をセットアップしているときに、 「このアカウント (This account)」 を選択します。

  5. ソース・サービスについて、リストから 「VPC インフラストラクチャー・サービス」 を選択します。

  6. 有効範囲を選択します。 「特定のリソース」 を選択します。

  7. 「リソース・タイプ」 をクリックします。 リストから、 IBM Cloud Backup for VPC を選択します。

  8. ターゲット・サービスについて、リストから 「VPC インフラストラクチャー・サービス」 を選択します。

  9. 有効範囲を選択します。 「特定のリソース」 を選択します。

  10. 「リソース・タイプ」 をクリックします。 以下のいずれかのサービスを選択します。 すべての許可を作成する必要があります。

    表 1. サービス間の許可
    ソース・サービス - リソース・タイプ ターゲット・サービス - リソース・タイプ 従属サービス・ユーザー役割
    IBM Cloud Backup for VPC Block Storage for VPC オペレーター
    IBM Cloud Backup for VPC Block Storage Snapshots for VPC エディター
    IBM Cloud Backup for VPC VPC のマルチボリューム・スナップショット エディター
    IBM Cloud Backup for VPC Virtual Server for VPC オペレーター
  11. 次に、「プラットフォーム・アクセス (Platform access)」の下で、役割を選択します。 該当する役割については、表 1 を参照してください。

  12. 「許可」 をクリックします。

  13. 「許可の管理」 ページに戻ったら、 「作成」 を再度クリックし、同じ手順に従って残りのサービスの許可をセットアップします。

エンタープライズのアカウント間許可の作成

エンタープライズ管理者がバックアップを一元的に管理できるようにするには、サブアカウントが、エンタープライズ・アカウントのバックアップ・サービスが子アカウントのリソースと対話するための許可を提供する必要があります。

表 2. エンタープライズの Service-to-Service 許可
ソース・サービス - リソース・タイプ ターゲット・サービス - リソース・タイプ 従属サービス・ユーザー役割
IBM Cloud Backup for VPC Block Storage for VPC オペレーター
IBM Cloud Backup for VPC Block Storage Snapshots for VPC エディター
IBM Cloud Backup for VPC VPC のマルチボリューム・スナップショット エディター
IBM Cloud Backup for VPC Virtual Server for VPC オペレーター
IBM Cloud Backup for VPC IBM Cloud Backup for VPC エディター
  1. 許可の管理」ページで、作成をクリックします。
  2. サービス許可の付与 」ページで、ソース・アカウントを選択します。 エンタープライズ・アカウントのバックアップ・サービスの許可をセットアップする場合は、 「その他のアカウント」 を選択し、エンタープライズ・アカウントの ID を入力します。
  3. ソース・サービスについて、リストから 「VPC インフラストラクチャー・サービス」 を選択します。
  4. 有効範囲を選択します。 「特定のリソース」 を選択します。
  5. 「リソース・タイプ」 をクリックします。 リストから、 IBM Cloud Backup for VPC を選択します。
  6. ターゲット・サービスについて、リストから 「VPC インフラストラクチャー・サービス」 を選択します。
  7. 有効範囲を選択します。 「特定のリソース」 を選択します。
  8. 「リソース・タイプ」 をクリックします。 リストから、 IBM Cloud Backup for VPC を選択します。
  9. 次に、「プラットフォーム・アクセス」の下で、 「エディター」 役割を選択します。
  10. 「許可」 をクリックします。
  11. 「許可の管理」 ページに戻ったら、 「作成」 を再度クリックして、残りのサービスの許可を作成します。

CLI からの許可ポリシーの作成

アカウント・レベルでのサービス間許可の有効化

アカウントで Backup for VPC を使用してポリシーを作成し、バックアップ・ジョブを計画して実行するには、以下のサービス間許可を作成します。

  • オペレーター 役割を持つ backup-policy (ソース) から instance (ターゲット) へ
  • オペレーター 役割を持つ backup-policy (ソース) から volume (ターゲット) へ
  • 「エディター」 役割を持つ backup-policy (ソース) から snapshot (ターゲット) へ
  • 「エディター」 役割を持つ backup-policy (ソース) から snapshot-consistency-group (ターゲット) へ
  1. 許可ポリシーに関する以下の情報を含む 4 つの JSON ファイルを作成します。
    • インスタンス・サービス:
      {
        "type": "authorization",
        "subjects": [
            {
             "attributes": [
                 {
                     "name": "accountId",
                     "value": "ACCOUNT_ID"
                 },
                 {
                     "name": "serviceName",
                     "value": "is"
                 },
                 {
                     "name": "resourceType",
                     "value": "backup-policy"
                 }
                ]
            }
        ],
        "roles": [
            {
             "role_id": "crn:v1:bluemix:public:iam::::role:Operator"
            }
        ],
        "resources": [
            {
             "attributes": [
                 {
                     "name": "accountId",
                     "value": "ACCOUNT_ID"
                 },
                 {
                     "name": "serviceName",
                     "operator": "stringEquals",
                     "value": "is"
                 },
                 {
                     "name": "instanceId",
                     "value": "*",
                     "operator": "stringEquals"
                 }
             ]
           }
        ]
      }
      
    • Block Storage ・ボリューム・サービス:
      {
        "type": "authorization",
        "subjects": [
            {
             "attributes": [
                 {
                     "name": "accountId",
                     "value": "ACCOUNT_ID"
                 },
                 {
                     "name": "serviceName",
                     "value": "is"
                 },
                 {
                     "name": "resourceType",
                     "value": "backup-policy"
                 }
                ]
            }
        ],
        "roles": [
            {
             "role_id": "crn:v1:bluemix:public:iam::::role:Operator"
            }
        ],
        "resources": [
            {
             "attributes": [
                 {
                     "name": "accountId",
                     "value": "ACCOUNT_ID"
                 },
                 {
                     "name": "serviceName",
                     "operator": "stringEquals",
                     "value": "is"
                 },
                 {
                     "name": "volumeId",
                     "value": "*",
                     "operator": "stringEquals"
                 }
             ]
            }
        ]
      }
      
    • Block Storage ・スナップショット・サービス:
      {
        "type": "authorization",
        "subjects": [
            {
             "attributes": [
                 {
                     "name": "accountId",
                     "value": "ACCOUNT_ID"
                 },
                 {
                     "name": "serviceName",
                     "value": "is"
                 },
                 {
                     "name": "resourceType",
                     "value": "backup-policy"
                 }
                ]
            }
        ],
        "roles": [
            {
             "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
            }
        ],
        "resources": [
            {
             "attributes": [
                 {
                     "name": "accountId",
                     "value": "ACCOUNT_ID"
                 },
                 {
                     "name": "serviceName",
                     "operator": "stringEquals",
                     "value": "is"
                 },
                 {
                     "name": "snapshotId",
                     "value": "*",
                     "operator": "stringEquals"
                 }
             ]
            }
           ]
      }
      
    • スナップショット整合性グループ:
      {
       "type": "authorization",
       "subjects": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "value": "is"
                },
                {
                    "name": "resourceType",
                    "value": "backup-policy"
                }
            ]
        }
       ],
       "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
        }
       ],
       "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "operator": "stringEquals",
                    "value": "is"
                },
                {
                    "name": "snapshotConsistencyGroupId",
                    "value": "*",
                    "operator": "stringEquals"
                }
            ]
        }
       ]
      }
    
  2. 次に、JSON ファイルを使用して以下の CLI コマンドを実行します。
    ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
    

このコマンドで利用可能なすべてのパラメーターについて詳しくは、ibmcloud iam authorization-policy-create を参照してください。

エンタープライズのアカウント間許可の作成

エンタープライズ管理者がバックアップを一元的に管理できるようにするには、サブアカウントが、エンタープライズ・アカウントのバックアップ・サービスが子アカウントのリソースと対話するための許可を提供する必要があります。

--source-service-account--source-service-instance-name、または --source-service-instance-id のいずれかのオプションを指定して ibmcloud iam authorization-policy-create コマンドを実行し、エンタープライズ・アカウントをソースとして識別します。 エンタープライズ・アカウント ID を取得するには、以下のコマンドを実行します。

ibmcloud enterprise show

次に、そのアカウント ID を使用して、エンタープライズ・アカウントのバックアップ・サービス・インスタンスが子アカウントのバックアップ・サービス、スナップショット・サービス、ボリューム・サービス、およびインスタンス・サービスと対話することを許可します。

ibmcloud iam authorization-policy-create is is Editor --source-resource-type backup-policy --target-resource-type backup-policy --source-service-account ACCOUNT_ID
ibmcloud iam authorization-policy-create is is Editor --source-resource-type backup-policy --target-resource-type snapshot --source-service-account ACCOUNT_ID
ibmcloud iam authorization-policy-create is is Editor --source-resource-type backup-policy --target-resource-type volume --source-service-account ACCOUNT_ID
ibmcloud iam authorization-policy-create is is Editor --source-resource-type backup-policy --target-resource-type snapshot-consistency-group --source-service-account ACCOUNT_ID
ibmcloud iam authorization-policy-create is is Editor --source-resource-type backup-policy --target-resource-type instance --source-service-account ACCOUNT_ID

このコマンドで利用可能なすべてのパラメーターについて詳しくは、ibmcloud iam authorization-policy-create を参照してください。

API を使用した許可ポリシーの作成

アカウント・レベルでのサービス間許可の有効化

アカウントで Backup for VPC を使用してポリシーを作成し、バックアップ・ジョブを計画して実行するには、以下のサービス間許可を作成します。

  • operator 役割を持つ is.backup-policy (ソース) から is.instance (ターゲット)。
  • operator 役割を持つ is.backup-policy (ソース) から is.volume (ターゲット)。
  • editor 役割を持つ is.backup-policy (ソース) から is.snapshot (ターゲット) へ。
  • is.backup-policy (ソース) to is.snapshot-consistency-group with editor 役割

以下の例のように、 IAM ポリシー管理 API に対して要求を行います。

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
'Authorization: Bearer $TOKEN' -H 
'Content-Type: application/json' -d 
'{
   "type": "access",
   "description": "Operator role for the Backup service to the Virtual Server service",
   "subjects": [
    {"attributes": [
       {"name": "serviceName","value": "is"},
       {"name": "accountId","value": "$ACCOUNT_ID"},
       {"name": "resourceType","value": "backup-policy"}]
    }
   ],
  "roles":[
    {"role_id": "crn:v1:bluemix:public:iam::::role:Operator"}
   ],
   "resources":[
    {"attributes":[
      {"name": "accountId","value": "$ACCOUNT_ID"},
      {"name": "serviceName","value": "is","operator": "stringEquals"},
      {"name": "instanceId","value": "*","operator": "stringEquals"}]
    }
  ]
}'
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
'Authorization: Bearer $TOKEN' -H 
'Content-Type: application/json' -d 
'{
   "type": "access",
   "description": "Operator role for the Backup service to the Cloud Block Storage",
   "subjects":[
    {"attributes":[
      {"name": "serviceName","value": "is"},
      {"name": "accountId","value": "$ACCOUNT_ID"},
      {"name": "resourceType","value": "backup-policy"}]
    }],
   "roles":[
    {"role_id": "crn:v1:bluemix:public:iam::::role:Operator"}
    ],
   "resources":[
    {"attributes": [
      {"name": "accountId","value": "$ACCOUNT_ID"},
      {"name": "serviceName","value": "is.volume","operator": "stringEquals"},
      {"name": "volumeId","value": "*","operator": "stringEquals"}
     ]
    }
   ]
}'
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
'Authorization: Bearer $TOKEN' -H 
'Content-Type: application/json' -d 
'{
   "type": "access",
   "description": "Editor role for the Backup service to Block Storage Snapshots",
   "subjects": [
    {"attributes": [
      {"name": "serviceName","value": "is"},
      {"name": "accountId","value": "$ACCOUNT_ID"},
      {"name": "resourceType","value": "backup-policy"}]
    }
   ],
   "roles":[
    {"role_id": "crn:v1:bluemix:public:iam::::role:Editor"}
   ],
   "resources":[
    {"attributes": [
      {"name": "accountId","value": "$ACCOUNT_ID"},
      {"name": "serviceName","value": "is","operator": "stringEquals"},
      {"name": "snapshotId","value": "*","operator": "stringEquals"}]
    }
   ]
}'
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
'Authorization: Bearer $TOKEN' -H 
'Content-Type: application/json' -d 
'{
   "type": "access",
   "description": "Editor role for the Backup service to the Snapshot consistency groups",
   "subjects": [
    {"attributes": [
       {"name": "serviceName","value": "is"},
       {"name": "accountId","value": "$ACCOUNT_ID"},
       {"name": "resourceType","value": "backup-policy"}]
    }
   ],
  "roles":[
    {"role_id": "crn:v1:bluemix:public:iam::::role:Editor"}
   ],
   "resources":[
    {"attributes":[
      {"name": "accountId","value": "$ACCOUNT_ID"},
      {"name": "serviceName","value": "is","operator": "stringEquals"},
      {"name": "snapshotConsistencyGroupId","value": "*","operator": "stringEquals"}]
    }
  ]
}'

詳しくは、 IAM ポリシー管理 の API 仕様を参照してください。

エンタープライズのアカウント間許可の作成

エンタープライズ管理者がバックアップを一元的に管理できるようにするには、サブアカウントが、エンタープライズ・アカウントのバックアップ・サービスが子アカウントのリソースと対話するための許可を提供する必要があります。

  1. Enterprise Management API に対して API 要求を行い、親エンタープライズ・アカウントのアカウント ID を取得します。

    curl -X GET "https://enterprise.cloud.ibm.com/v1/enterprises" -H 
    "Authorization: Bearer <IAM_Token>" -H 
    'Content-Type: application/json'
    
  2. 次に、 IAM Policy Management API に対して、エンタープライズ・アカウントの is.backup-policy が子アカウントの is.backupis.snapshotis.volumeis.snapshot-consistency-group、および is.instance サービスと対話するためのサービス間許可を作成するように要求します。

    • editor 役割を使用して、 is.backup-policy (ソース) が is.backup-policy (ターゲット) と対話することを許可します。
    curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
    'Authorization: Bearer $TOKEN' -H 
    'Content-Type: application/json' -d 
    '{
      "type": "access",
      "description": "Editor role for the Enterprise account's backup service to interact with this account's backup service.",
      "subjects": [
        {"attributes": [
           {"name": "serviceName","value": "is"},
           {"name": "accountId","value": "$ENTERPRISE_ACCOUNT_ID"},
           {"name": "resourceType","value": "backup-policy"}]
         }
       ],
      "roles":[
        {"role_id": "crn:v1:bluemix:public:iam::::role:Editor"}
      ],
      "resources":[
        {"attributes":[
           {"name": "accountId","value": "$SUB_ACCOUNT_ID","operator": "stringEquals"},
           {"name": "serviceName","value": "is","operator": "stringEquals"},
           {"name": "backupPolicyId","value": "*","operator": "stringEquals"}]
        }
       ]
      }'
    
    • is.backup-policy (ソース) が オペレーター 役割で is.volume (ターゲット) と対話することを許可します。
    curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
    'Authorization: Bearer $TOKEN' -H 
    'Content-Type: application/json' -d 
    '{
      "type": "access",
      "description": "Operator role for the Enterprise account's backup service to interact with this account's volume service",
      "subjects": [
        {
         "attributes": [
           {"name": "serviceName","value": "is"},
           {"name": "accountId","value": "$ENTERPRISE_ACCOUNT_ID"},
           {"name": "resourceType","value": "backup-policy"}]
         }
       ],
      "roles":[
        {"role_id" "crn:v1:bluemix:public:iam::::role:Operator"}
       ],
      "resources":[
        {"attributes": [
           {"name": "accountId","value": "$SUB_ACCOUNT_ID"},
           {"name": "serviceName","value": "is.volume","operator": "stringEquals"},
           {"name": "volumeId","value": "*","operator": "stringEquals"}]
        } 
       ]
    }'
    
    • editor 役割を使用して、 is.backup-policy (ソース) が is.snapshot (ターゲット) と対話することを許可します。
    curl -X POST 'https://iam.test.cloud.ibm.com/v1/policies' -H 
    'Authorization: Bearer $TOKEN' -H 
    'Content-Type: application/json' -d 
     '{
       "type": "access",
       "description": "Editor role for the Enterprise account's backup service to interact with this account's snapshots",
       "subjects":[
        {
         "attributes":[
           {"name": "serviceName","value": "is"},
           {"name": "accountId","value": "$ENTERPRISE_ACCOUNT_ID"},
           {"name": "resourceType","value": "backup-policy"}]
         }
        ],
       "roles":[
          {"role_id": "crn:v1:bluemix:public:iam::::role:Editor"}
        ],
       "resources":[
          {"attributes": [
           {"name": "accountId","value": "$SUB_ACCOUNT_ID"},
           {"name": "serviceName","value": "is","operator": "stringEquals"},
           {"name": "snapshotId","value": "*","operator": "stringEquals"}]
        }
       ]
     }'
    
    • is.backup-policy (ソース) が オペレーター 役割で is.instance (ターゲット) と対話することを許可します。
    curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 
    'Authorization: Bearer $TOKEN' -H 
    'Content-Type: application/json' -d 
    '{
      "type": "access",
      "description": "Operator role for the Enterprise account's backup service to interact with this account's virtual server instance service",
      "subjects": [
        {"attributes": [
           {"name": "serviceName","value": "is"},
           {"name": "accountId","value": "$ENTERPRISE_ACCOUNT_ID"},
           {"name": "resourceType","value": "backup-policy"}]
         }
       ],
      "roles":[
        {"role_id" "crn:v1:bluemix:public:iam::::role:Operator"}
       ],
      "resources":[
        {"attributes": [
           {"name": "accountId","value": "$SUB_ACCOUNT_ID"},
           {"name": "serviceName","value": "is.volume","operator": "stringEquals"},
           {"name": "instanceId","value": "*","operator": "stringEquals"}]
        }
       ]
    }'
    

詳しくは、 IAM ポリシー管理 の API 仕様を参照してください。

Terraform を使用した許可ポリシーの作成

アカウント・レベルでのサービス間許可の有効化

main.tf ファイル内の ibm_iam_authorization_policy リソース引数を使用して、サービス間の許可ポリシーを作成します。

resource "ibm_iam_authorization_policy" "policy1" {
  subject_attributes {
    name  = "accountId"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  subject_attributes {
    name  = "serviceName"
    value = "is"
  }
  subject_attributes {
    name  = "resourceType"
    value = "backup-policy"
  }
  resource_attributes {
    name  = "accountId"
    operator = "stringEquals"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  resource_attributes {
    name  = "serviceName"
    operator = "stringEquals"
    value = "is"
  }
  resource_attributes {
    name  = "volumeId"
    operator = "stringExists"
    value = "true"
  }
  roles   = ["Operator"]
}

resource "ibm_iam_authorization_policy" "policy2" {
  subject_attributes {
    name  = "accountId"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  subject_attributes {
    name  = "serviceName"
    value = "is"
  }
  subject_attributes {
    name  = "resourceType"
    value = "backup-policy"
  }
  resource_attributes {
    name  = "accountId"
    operator = "stringEquals"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  resource_attributes {
    name  = "serviceName"
    operator = "stringEquals"
    value = "is"
  }
  resource_attributes {
    name  = "snapshotId"
    operator = "stringExists"
    value = "true"
  }
  roles   = ["Editor"]
}

resource "ibm_iam_authorization_policy" "policy3" {
  subject_attributes {
    name  = "accountId"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  subject_attributes {
    name  = "serviceName"
    value = "is"
  }
  subject_attributes {
    name  = "resourceType"
    value = "backup-policy"
  }
  resource_attributes {
    name  = "accountId"
    operator = "stringEquals"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  resource_attributes {
    name  = "serviceName"
    operator = "stringEquals"
    value = "is"
  }
  resource_attributes {
    name  = "snapshotConsistencyGroupId"
    operator = "stringExists"
    value = "true"
  }
  roles   = ["Editor"]
}

resource "ibm_iam_authorization_policy" "policy4" {
  subject_attributes {
    name  = "accountId"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  subject_attributes {
    name  = "serviceName"
    value = "is"
  }
  subject_attributes {
    name  = "resourceType"
    value = "backup-policy"
  }
  resource_attributes {
    name  = "accountId"
    operator = "stringEquals"
    value = data.ibm_iam_account_settings.iam.account_id
  }
  resource_attributes {
    name  = "serviceName"
    operator = "stringEquals"
    value = "is"
  }
  resource_attributes {
    name  = "instanceId"
    operator = "stringExists"
    value = "true"
  }
  roles   = ["Operator"]
}

引数および属性について詳しくは、 許可リソースに関する Terraform の資料を参照してください。

次のステップ

バックアップ・ポリシーの作成