为 File Storage for VPC 建立服务到服务授权
为 File Storage for VPC 的客户管理加密、跨账户共享和跨区域复制功能,建立IAM服务间授权机制。
您可以使用 Cloud Identity and Access Management (IAM)来创建或删除授权,从而允许某项服务访问另一项服务。
概述
在授权中,源服务是被授予对目标服务的访问权的服务。 您选择的角色将决定源服务的访问权限级别。 目标服务是您根据分配的角色授予源服务访问许可权的服务。 通常,源服务可以位于创建授权的同一帐户中,也可以位于另一个帐户中。 目标服务始终位于创建授权的帐户中。
对于 File Storage for VPC,您需要为以下内容创建服务间授权:
-
配置客户管理的加密:
要使用客户根密钥 (CRK) 创建加密文件共享,首先必须有一个密钥管理服务 (KMS) 实例来保存客户根密钥。 您可以选择 Key Protect 的单租户或多租户实例。 然后,需要在文件服务和 KMS 实例之间建立服务对服务的授权。 授权必须在拥有和托管客户根密钥的账户中创建。 持有 CRK 的账户是源账户,要创建文件共享的账户是目标账户。
Hyper Protect Crypto Services 已被废弃。 客户可以在 2027 年 3 月 20 日之前使用现有实例。 如需了解更多信息,请参阅 《 IBM Cloud Hyper Protect Crypto Services 已弃用 》。 为了持续保障安全,建议将现有的加密密钥迁移到专用的 Key Protect 实例中。 如需了解更多信息,请参阅《 迁移指南 》。
-
配置跨区域异步复制:
对于跨区域复制,您需要建立服务间授权,并为位于不同 VPC 中的各个 File Storage Service 实例指定 用户角色。 此授权允许一个 VPC 中的 File Storage 服务与另一个 VPC 中的 File Storage 服务进行交互。 两个 VPC 必须属于同一帐户。 不支持跨帐户复制。
如需了解更多信息,请参阅“复制概述”。
-
设置跨账户访问
对于跨账户访问,需要在两个不同账户的 File Storage 服务之间建立服务对服务授权。 授权必须在拥有和托管文件共享的账户中创建。 您还必须在这两个账户中指定 用户角色,以允许用户创建和管理访问者共享和共享绑定。 有关更多信息,请参阅 从另一个帐户共享和加载文件共享。
有关授权的更多信息,请参阅 使用授权在服务之间授予访问权。
在控制台创建客户管理加密授权
- 在 IBM Cloud 控制台中,登录密钥管理服务 (KMS) 和客户根密钥 (CRK) 所在的账户。
- 转到 “管理”>“访问”(IAM)。
- 从侧面板中,选择 授权。
- 在 “管理授权”页面上,单击 “创建”。
- 在 源 部分中,选择 源帐户。 该账户用于使用 CRK 创建客户管理加密的文件共享。
- 要允许使用此账户中的 CRK 加密另一账户中的文件共享,请选择特定账户并输入文件服务账户的 32 个字符长的账户 ID。 然后,单击下一步。
- 否则,请选择 此帐户。 然后,单击下一步。
- 对于源服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 单击下一步。
- 对于目标服务,请从列表中选择 KeyProtect 列表中的选项。 单击下一步。
- 选择角色“
Reader”。 - 选中此框以允许源服务和从属服务委派授权。
- 单击 复审 并检查您的选择。
- 单击授权。
在控制台中为跨区域复制创建授权
- 在 IBM Cloud 控制台中,登录文件共享所在的账户。
- 转到 “管理”>“访问”(IAM)。
- 从侧面板中,选择 授权。
- 在 “管理授权”页面上,单击 “创建”。
- 在 源 部分中,选择 源帐户。 选择“此帐户”,然后单击“下一步”。
- 对于源服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 单击下一步。
- 对于目标服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 单击下一步。
- 选择角色“
Editor”。 - 单击 复审 并检查您的选择。
- 单击授权。
为企业中的所有子账户创建跨区域复制授权
企业账户管理员可以为子账户 创建和分配授权策略模板,以便集中管理授权。 要创建一个授权策略模板,用于为企业的所有子账户启用跨区域复制,请完成以下步骤:
- 转到控制台中的 管理 > 访问 (IAM) > 模板。
- 选择“授权”,然后单击“创建”。
- 输入授权模板的名称和描述,说明其对企业用户的用途。
- 输入企业管理授权策略的描述,说明该策略对子账户用户的作用。
- 单击创建。
接下来,完成以下步骤以建立授权规则:
- 转到 授权 指定授权策略的详细信息。
- 选择指定账户。 将授权模板分配给子账户时,源账户会被填充为与子账户相同的账号,而子账户则持有被访问的资源。
- 然后,选择源服务和资源。
- 从列表中选择 VPC 基础设施服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 单击下一步。
- 对于目标服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 单击下一步。
- 选择角色“
Editor”。 - 单击 复查 和 保存。
- 模板现在可以提交并分配给子账户了。
在控制台创建跨账户访问授权
此授权用于创建访问者股份以及在不同账户间共享数据。
- 在 IBM Cloud 控制台中,登录文件共享所在的账户。
- 转到 “管理”>“访问”(IAM)。
- 从侧面板中,选择 授权。
- 在 “管理授权”页面上,单击 “创建”。
- 在 源 部分中,选择 源帐户。
- 如果要允许其他帐户访问文件共享上的数据,请选择 特定帐户 并输入 32 个字符长的帐户标识。 然后,单击下一步。
- 如果要在同一帐户中创建存取器共享,请选择 此帐户。 然后,单击下一步。
- 对于源服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 单击下一步。
- 对于目标服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 点击“添加条件”。
- 单击 选择属性,然后选择 共享标识。
- 从列表中选择要共享的项目。
- 单击下一步。
- 选择角色“
Share Broker”。 - 单击 复审 并检查您的选择。
- 单击授权。
在控制台中为 Watson Studio 创建授权
- 在 IBM Cloud 控制台中,登录文件共享所在的账户。
- 转到 “管理”>“访问”(IAM)。
- 从侧面板中,选择 授权。
- 在 “管理授权”页面上,单击 “创建”。
- 在“授予服务授权”页面上,选择 此帐户。
- 对于源服务,从列表中选择 Watson Studio。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择“源服务实例”。
- 在下一个字段中,选择 所有实例。
- 单击下一步。
- 对于目标服务,从列表中选择 VPC 基础架构服务。 单击下一步。
- 通过单击 特定资源来选择作用域。
- 单击“选择一个属性”。
- 从列表中选择 资源类型。
- 在下一个字段中,选择 File Storage for VPC。
- 点击“添加条件”。
- 单击 选择属性,然后选择 共享标识。
- 字符串等号字段保持不变。
- 在下一个字段中,从列表中选择源共享。
- 单击下一步。
- 选择角色“
Share Broker”。 - 选中此框以允许源服务和从属服务委派授权。
- 单击 复审 并检查您的选择。
- 单击授权。
从 CLI 创建客户管理加密授权
请登录您的账户。 运行 ibmcloud iam authorization-policy-create 命令,为 File Storage 服务创建授权策略,以便其与您的 Key Protect 实例进行交互。 源服务为 is,其 --source-resource-type share,目标服务为 kms。 您需要分配的角色是 Reader。 以下示例演示了如何在
File Storage 服务与 Key Protect 之间创建授权策略。
ibmcloud iam authorization-policy-create is kms Reader --source-resource-type share
Creating authorization policy under account a1234567 as test.user@ibm.com...
OK
要列出已针对帐户实施的服务授权,请运行 ibmcloud iam authorization-policies 命令。 以下示例表明,可以使用存储在 Key Protect 中的CRK对文件共享进行加密。
ibmcloud iam authorization-policies
Getting authorization policies under account a1234567 as test.user@ibm.com...
OK
ID: d2df60ea-5575-4bd1-9cd6-f35c52576577
Source service name: is
Source service instance: All instances
Source resource type: share
Target service name: kms
Target service instance: All instances
Roles: Authorization Delegator, Reader
有关可用于此命令的所有参数的更多信息,请参阅 ibmcloud iam authorization-policy-create。
从 CLI 创建跨账户加密授权
登录拥有 Key Protect 实例的账户。 运行 ibmcloud iam authorization-policy-create 命令,为文件服务创建与 KMS 交互的授权策略。 源服务为 is,其 --source-resource-type share,目标服务为 kms。 您需要分配的角色是 Reader。 以下示例在 KeyUserAccount 的文件服务与 KeyOwnerAccount 的 Key Protect 实例之间创建了一项授权策略。
-
为本地文档文件夹中的授权策略创建一个 JSON 文件,其中包含以下信息。
'{ "description":"Reader and Delegator role for KeyProtect service instance", "resources": [{"attributes": [ {"name": "KeyOwnerAccountID","value": "a/a1234567","operator": "stringEquals"}, {"name":"serviceName","operator":"stringEquals","value":"kms"}]}], "roles": [ {"role_id":"crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"}, {"role_id":"crn:v1:bluemix:public:iam::::serviceRole:Reader"}], "subjects": [ {"name": "serviceName","value": "is"}, {"name": "resourceType","value": "share"}, {"name": "KeyUserAccountID","value": "a/a7654321"}], "type":"authorization" }' -
然后,使用 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 命令以授权区域文件服务协同工作。
ibmcloud iam authorization-policy-create is is Editor --source-resource-type share --target-resource-type share
请参阅以下示例。
$ ibmcloud iam authorization-policy-create is is Editor --source-resource-type share --target-resource-type share
Creating authorization policy under account a1234567 as test.user@ibm.com...
OK
Authorization policy f311f255-d20e-49d0-aa94-316feaba981e was created.
ID: f311f255-d20e-49d0-aa94-316feaba981e
Source service name: is
Source service instance: All instances
Source resource type: share
Target service name: is
Target service instance: All instances
Target resource type: share
Roles: Editor
有关可用于此命令的所有参数的更多信息,请参阅 ibmcloud iam authorization-policy-create。
为企业的所有子账户创建跨区域复制授权
企业账户管理员可以为子账户 创建和分配授权策略模板,以便集中管理授权。 要创建一个授权策略模板,用于为企业的所有子账户启用跨区域复制,请完成以下步骤。
-
创建一个 JSON 文件,提供授权策略模板的定义。 有关 JSON 文件中可使用的属性的更多信息,请参阅 IAM Policy Management API。
下面的 JSON 文件示例指定了模板的
name和description以及企业账户的account_id。 授权模板在指定账户中的所有 " File Storage for VPC " 之间授予编辑器角色。{ "name": "VPC_REGIONAL_REPLICATOR", "description": "Grant Editor Role between VPC File Storage to enable regional replication", "account_id": "ENTERPRISE_ROOT_ACCOUNT_ID", "policy": { "type": "authorization", "description": "Grant Editor on VPC File Storage", "control": { "grant": { "roles": [ { "role_id": "crn:v1:bluemix:public:iam::::role:Editor" } ] } }, "subject": { "attributes": [ { "key": "serviceName", "operator": "stringEquals", "value": "is" }, { "key": "resourceType", "operator": "stringEquals", "value": "share" } ] } , "resource": { "attributes": [ { "key": "serviceName", "operator": "stringEquals", "value": "is" }, { "key": "resourceType", "operator": "stringEquals", "value": "share" } ] } } } -
如以下请求示例所示,使用 JSON 文件运行
authorization-policy-template-create命令:
ibmcloud iam authorization-policy-template-create --file /path/to/vpc-share-authorization-template.json
有关此命令可用参数的更多信息,请参阅 管理 IAM 访问、API 密钥、受信任配置文件、服务 ID 和访问组(ibmcloud iam) CLI 参考。
通过 CLI 创建跨账户访问授权
此授权用于创建访问者股份以及在不同账户间共享数据。
作为共享所有者,创建 JSON 文件并将其与 ibmcloud iam authorization-policy-create 命令配合使用,以便为共享所有者帐户 (源) 的 File Storage for VPC 服务创建服务到服务授权,以访问存取器帐户 (目标) 中的共享。
-
创建一个内容如下所示的 JSON 文件。 在此示例中,该文件将创建为 Documents 文件夹中的 policy.json。
{ "roles": [{"role_id": "crn:v1:bluemix:public:iam::::role:ShareBroker","display_name": "Share Broker", "description": "As a share broker, you can create and delete share bindings"}], "resources": [{"attributes": [ {"name": "accountId","value": "<origin share owner Account ID>","operator": "stringEquals"}, {"name": "serviceName","value": "is","operator": "stringEquals"}, {"name": "shareId","value": "<OriginShareId>","operator": "stringEquals"}]}], "type": "authorization", "description": "ShareBroker role for File Storage for VPC cross-account share access", "subjects": [{"attributes": [ {"name": "serviceName","value": "is"}, {"name": "resourceType","value": "share"}, {"name": "accountId","value": "<accessor share Account ID>"}]}] } -
然后,使用 JSON 文件运行 CLI 命令以创建授权策略。
ibmcloud iam authorization-policy-create --file ~/Documents/policy.json
使用应用程序接口为客户管理的加密创建授权
要授权文件服务访问您的密钥管理服务(KMS)实例,请向 IAM 策略管理 API 发送 API 请求,以创建服务间授权。
-
以下示例显示如何授权文件服务
is.share(源) 与具有 读者 角色的 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 file service to interact with the KeyProtect service.", "subjects": [ {"attributes": [ {"name": "serviceName","value": "is"}, {"name": "resourceType","value": "share"}]}], "roles":[ {"role_id": "crn:v1:bluemix:public:iam::::role:Reader"}], "resources":[ {"attributes": [ {"name": "serviceName","value": "kms"}]}] }' -
要为 Hyper Protect Crypto Services创建授权策略,请将先前示例中的
kms替换为hs-crypto。
使用应用程序接口创建跨账户加密授权
若要授权另一个账户的文件服务访问您的密钥管理服务(KMS)实例,请向 IAM 策略管理 API 发送请求,以创建服务间授权。 以下示例演示了如何为源账户的 File Storage for VPC 服务创建授权,使其能够以“读取者”权限访问您的账户(目标账户)的密钥管理服务。
curl -X POST "https://iam.cloud.ibm.com/v1/policies" \
-H "Authorization: <Auth Token>" \
-H 'Content-Type: application/json' \
-d '{
"description":"Reader and Delegator role for KeyProtect service instance",
"resources": [{"attributes": [
{"name": "KeyOwnerAccountID","value": "a/a1234567","operator": "stringEquals"},
{"name": "serviceName","operator":"stringEquals","value":"kms"}]}],
"roles": [
{"role_id": "crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"},
{"role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"}],
"subjects": [
{"name": "serviceName","value": "is"},
{"name": "resourceType","value": "share"},
{"name": "KeyUserAccountID","value": "a/a7654321"}],
"type":"authorization"
}'
使用应用程序接口为跨区域复制创建授权
向 IAM 策略管理 API 发出请求,以便为源共享的区域文件服务创建服务到服务授权,以便与副本共享的区域文件服务进行交互。
-
授权
is.share(源) 与具有 编辑者 角色的is.share(目标) 进行交互。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 source share's regional file service to interact with replica share's regional file service.", "subjects": [ {"attributes": [ {"name": "serviceName","value": "is"}, {"name": "resourceType","value": "share"}]}], "roles":[ {"role_id": "crn:v1:bluemix:public:iam::::role:Editor"}], "resources":[ {"attributes": [ {"name": "serviceName","value": "is"}, {"name": "resourceType","value": "share"}]}] }'
有关更多信息,请参阅 IAM 策略管理 的 API 规范。
使用应用程序接口创建跨账户访问授权
此授权用于创建访问者股份以及在不同账户间共享数据。
作为共享所有者,向 IAM 策略管理 API 提出 API 请求,创建允许访问者账户访问源共享的授权。 下面的示例显示了如何在源共享账户(源)和访问者账户(目标)之间创建服务对服务授权。
curl -X POST "https://iam.cloud.ibm.com/v1/policies" \
-H "Authorization: <Auth Token>" \
-H 'Content-Type: application/json' \
-d '
{"roles": [
{"role_id": "crn:v1:bluemix:public:iam::::role:ShareBroker",
"display_name": "Share Broker",
"description": "As a share broker, you can create and delete share bindings"}
],
"resources": [
{"attributes": [
{"name": "accountId","value": "<origin share owner Account ID>","operator": "stringEquals"},
{"name": "serviceName","value": "is","operator": "stringEquals"},
{"name": "shareId","value": "<OriginShareId>","operator": "stringEquals"}
]}],
"type": "authorization",
"description": "ShareBroker role for File Storage for VPC cross-account share access",
"subjects": [{"attributes": [
{"name": "serviceName","value": "is"},
{"name": "resourceType","value": "share"},
{"name": "accountId","value": "<accessor share Account ID>"}]}]
}'
使用 Terraform 为客户管理的加密创建授权
使用 main.tf 文件中的 ibm_iam_authorization_policy 资源参数在文件服务与密钥管理服务之间创建授权策略。
以下示例在应用时在文件服务与 Key Protect 之间创建授权策略。
resource "ibm_iam_authorization_policy" "mypolicy4keyprotect" {
source_service_name = "is"
source_resource_type = "share"
target_service_name = "kms"
roles = ["Reader"]
}
有关自变量和属性的更多信息,请参阅 授权资源的 Terraform 文档。
使用 Terraform 创建跨账户加密授权
-
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 提供者。
-
要在一个账户的文件共享服务和另一个账户的密钥管理服务之间创建 IAM 授权,请使用资源 "
ibm_iam_authorization_policy。 以下示例演示了如何在某个账户的文件服务与另一个账户的 Key Protect 服务之间建立授权关系。resource "ibm_iam_authorization_policy" "policy" { source_service_name = "is" source_resource_type = "share" source_service_account = "<fileshare-account-id>" target_service_name = "kms" target_resource_instance_id = ibm_kms_key.key.instance_id roles = ["Reader"] description = "Authorization Policy" }该 terraform 资源还必须包括提供商别名(在我们的例子中为 "
ibm.team_account)和存储加密密钥的账户 "ibmcloud_api_key。
使用 Terraform 创建跨区域复制授权
使用 main.tf 文件中的 ibm_iam_authorization_policy 资源参数在不同区域中的文件服务之间创建授权策略。
resource "ibm_iam_authorization_policy" "mypolicy" {
source_service_name = "is"
source_resource_type = "share"
target_service_name = "is"
target_resource_type = "share"
roles = ["Editor"]
}
有关自变量和属性的更多信息,请参阅 授权资源的 Terraform 文档。
使用 Terraform 创建跨账户访问授权
此授权用于创建访问者股份以及在不同账户间共享数据。
-
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 提供者。
-
要在文件共享服务之间创建从一个帐户到另一个帐户中的文件共享服务的 IAM 授权,请使用资源
ibm_iam_authorization_policy。 以下示例在两个帐户的文件服务之间创建授权。resource "ibm_iam_authorization_policy" "policy" { source_service_name = "is" source_resource_type = "share" source_service_account = "<ShareOwner-Account-id>" target_service_name = "is" target_resource_type = "share" target_service_account = "<Accessor-Account-id>" roles = ["ShareBroker"] description = "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 = "share" } resource_attributes { name = "shareId" operator = "stringEquals" value = data.ibm_share_id } resource_attributes { name = "serviceName" operator = "stringEquals" value = "is" } resource_attributes { name = "volumeId" operator = "stringExists" value = "true" } roles = ["ShareBroker"] }此 Terraform 资源还必须包含具有源共享所在帐户
ibmcloud_api_key的提供程序别名 (在我们的示例中为ibm.team_account)。有关自变量和属性的更多信息,请参阅 ibm_iam_authorization_policy。