授與 IBM Cloud Object Storage 存取權以匯入及匯出映像檔

若要匯入自訂影像到 IBM Cloud VPC,或從 IBM Cloud VPC 匯出自訂影像,您必須有 IBM Cloud® Object Storage 的實例可用。 您也必須在 Object Storage 建立儲存區,以儲存映像檔。 最後,您必須建立一項授權,以便 VPC 影像服務能夠存取 Object Storage。

建立 IBM Cloud Object Storage 服務實例

如果需要建立 IBM Cloud Object Storage 的實例,請參閱開始使用 IBM Cloud Object Storage

請前往 Cloud Identity and Access Management,您必須建立一項授權,以便 VPC 的影像服務能夠存取 IBM Cloud Object Storage。

建立授權

若要授權 VPC 的映像檔服務存取目標服務 IBM Cloud Object Storage,您必須建立 授權。 若要匯入影像,您必須指定 Object Storage 的 Reader 服務存取角色。 若要匯出映像檔,您必須指定 IBM Cloud Object Storage的「撰寫者」服務存取角色。 有了 Object Storage 的 Reader 和 Writer 服務存取角色,您就可以匯入和匯出影像。

在主控台中授予讀者和寫者存取權限

完成下列步驟,以建立 VPC 映像檔服務的授權,從 IBM Cloud Object Storage 服務實例匯入映像檔,並將映像檔匯出至 IBM Cloud Object Storage 服務實例。

  1. IBM Cloud 主控台 功能表列,按一下 管理> 存取權 (IAM),然後選取 授權

  2. 在「管理授權」頁面上,按一下 建立

  3. 選取 來源帳戶。 預設情況下,此帳戶已被選中。 按下一步

  4. 請選擇用於授權的來源服務。 請將「VPC 基礎架構服務」指定為來源服務。 按下一步

  5. 對於資源,請選擇存取範圍的方式。

    1. 選擇特定資源
    2. 對於特定資源,選擇資源類型VPC 的映像服務
    3. 下一步
  6. 對於目標服務,選擇 Cloud Object Storage。 按下一步

  7. 對於資源,指定您希望如何確定存取範圍。 您可以使用預設的 All resources(所有資源 )選項。 按下一步

    如果您想在 IBM Cloud Object Storage 內設定特定資源的存取範圍,可以選擇 基於選定屬性的資源。 然後,根據您的喜好進行選擇,縮小存取範圍。

  8. 對於角色,選擇服務存取角色 ReaderWriter

  9. 按一下「檢閱」以確保您的選擇看起來正確無誤。

  10. 按一下授權

如需相關資訊,請參閱使用授權來授與服務之間的存取權

從 CLI 授與所有儲存區的「讀者」及「撰寫者」存取權

若要授與 ReaderWriter 對 IBM Cloud Object Storage中所有儲存區的存取權,請執行 iam authorization-policy-create 指令。 以下指令授權 Image Service for VPC 從 Object Storage 服務實體中的任何儲存桶匯入影像,並將影像匯出到 Object Storage 服務實體中的任何儲存桶。

ibmcloud iam authorization-policy-create is cloud-object-storage Reader,Writer --source-resource-type image

如需相關資訊,請參閱 ibmcloud iam authorization-policy-create

從 CLI 授與特定儲存區的存取權

您可以選擇將授權授與 IBM Cloud Object Storage中的特定儲存區。 以下範例說明如何授予 Reader 對特定儲存桶的存取權,以便從 Object Storage 匯入影像。 若要匯出影像到 Object Storage,您必須同時授予 Writer 存取權限。

執行指令前,您需要知道 Object Storage 服務範例的 GUID。

  1. 使用 ibmcloud resource service-instance 指令來取得 GUID。 請參閱下列範例:

    $ ibmcloud resource service-instance cos-fs-cloud-us-south
    Retrieving service instance cos-fs-cloud-us-south in all resource groups under account Test Account as test.user@ibm.com...
    OK
    
    Name:                  cos-fs-cloud-us-south
    ID:                    crn:v1:bluemix:public:cloud-object-storage:global:a/a1234567:0e4a33e6-973e-42b6-bea4-ce1b3aebe163::
    GUID:                  0e4a33e6-973e-42b6-bea4-ce1b3aebe163
    Location:              global
    Service Name:          cloud-object-storage
    Service Plan Name:     standard
    Resource Group Name:   defaults
    State:                 active
    Type:                  service_instance
    Sub Type:
    Locked:                false
    Created at:            2021-07-27T14:40:45Z
    Created by:            IBMid-12345678
    Updated at:            2021-07-27T14:40:47Z
    Last Operation:
                           Status    create succeeded
                           Message   Completed create instance operation
    
  2. 執行下列指令,並將 $COS_INSTANCE_GUID 取代為 GUID 值。

    ibmcloud iam authorization-policy-create is cloud-object-storage Reader --source-resource-type image --target-service-instance-id $COS_INSTANCE_GUID
    

    成功的回應如下例所示:

    $ ibmcloud iam authorization-policy-create is cloud-object-storage Reader --source-resource-type image --target-service-instance-id 0e4a33e6-973e-42b6-bea4-ce1b3aebe163
    Creating authorization policy under account a1234567 as test.user@ibm.com...
    OK
    Authorization policy 0bbcb168-bf7b-4ebf-9684-769f1d7e80e7 was created.
    
    ID:                        0bbcb168-bf7b-4ebf-9684-769f1d7e80e7
    Source service name:       is
    Source service instance:   All instances
    Source resource type:      image
    Target service name:       cloud-object-storage
    Target service instance:   0e4a33e6-973e-42b6-bea4-ce1b3aebe163
    Roles:                     Reader
    

如需此指令可用的所有參數的相關資訊,請參閱 ibmcloud iam authorization-policy-create

使用 API 授與存取權

若要授權來源服務存取目標服務,請使用 IAM 原則管理 API。 請參閱下列 API 範例,以取得在指定 type=authorization 的情況下建立原則方法。 會列出所有可能的屬性。

用於建立授權原則的受支援屬性取決於每個服務支援的內容。 如需每一個服務所支援屬性的相關資訊,請參閱您正在使用之服務的說明文件。

此範例顯示 VPC 的「映像檔服務」存取 IBM Cloud Object Storage的授權原則。

curl --location --request POST 'https://iam.cloud.ibm.com/v1/policies' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <iam token>' \
--data-raw '{
    "type": "authorization",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "$ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "value": "is"
                },
                {
                    "name": "resourceType",
                    "value": "image"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
        },
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "$ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "value": "cloud-object-storage"
                }
            ]
        }
    ]
}'

使用 Terraform 授予存取權

若要為 IBM Cloud Object Storage 建立服務對服務授權政策,請在 main.tf 檔案中使用 ibm_iam_authorization_policy 資源參數。

resource "ibm_iam_authorization_policy" "policy" {
  source_service_name  = "is"
  source_resource_type = "image"
  target_service_name  = "cloud-object-storage"
  roles                = ["Reader","Writer"]
  description          = "Authorization Policy"
}

有關參數和屬性的詳細資訊,請參閱 授權資源的 Terraform 文件

下一步

完成這些步驟之後,Image Service for VPC 就可以存取 Object Storage 中的影像或匯出影像到 Object Storage,繼續下列其中一個主題: