授予对 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。
创建授权
要授权 Image Service for VPC 访问目标服务 IBM Cloud Object Storage,必须创建 授权。 要导入图像,必须为 Object Storage 指定阅读器服务访问角色。 要导出映像,必须为 IBM Cloud Object Storage指定“写程序”服务访问角色。 通过 Object Storage 的阅读器和书写器服务访问角色,您可以导入和导出图像。
在控制台中授予阅读器和写入器访问权限
完成以下步骤,为 Image Service for VPC 创建授权,以从 IBM Cloud Object Storage 服务实例导入映像,并将映像导出到 IBM Cloud Object Storage 服务实例。
-
从 IBM Cloud 控制台 菜单栏中,单击 管理> 访问权 (IAM),然后选择 授权。
-
在“管理授权”页面上,单击 “创建”。
-
选择 源帐户。 默认情况下,此账户已被选中。 单击 下一步。
-
请选择用于授权的源服务。 将 “VPC 基础设施服务”指定为源服务。 单击下一步。
-
对于资源,选择访问范围。
- 选择特定资源。
- 对于特定资源,选择资源类型和 VPC 的映像服务。
- 单击下一步。
-
对于目标服务,选择 Cloud Object Storage。 单击下一步。
-
对于资源,请指定访问范围。 您可以使用默认的“所有资源”选项。 单击下一步。
如果您想在 IBM Cloud Object Storage 范围内访问特定资源,可以选择 基于选定属性的资源。 然后,根据自己的喜好进行选择,缩小访问范围。
-
在“角色”栏中,选择两个服务访问角色,即“读取器”和 “写入器”。
-
单击“审查”,确保您的选择看起来正确无误。
-
单击授权。
有关更多信息,请参阅使用授权来授予服务之间的访问权。
从 CLI 授予对所有存储区的“读者”和“写入者”访问权
要授予 Reader 和 Writer 对 IBM Cloud Object Storage中所有存储区的访问权,请运行 iam authorization-policy-create 命令。 以下命令授权 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。
-
使用
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 -
运行以下命令并将
$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 的情况下创建策略方法。 将列出所有可能的属性。
用于创建授权策略的受支持属性取决于每个服务支持的内容。 有关每个服务的受支持属性的更多信息,请参阅您正在使用的服务的文档。
此示例显示了 Image Service for 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,继续以下主题之一: