在 AWS RAM 中创建和使用客户托管权限 - AWS Resource Access Manager

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 AWS RAM 中创建和使用客户托管权限

AWS Resource Access Manager (AWS RAM) 为您可以共享的每种资源类型提供至少一种 AWS 托管权限。但是,这些托管权限可能不会为您的共享使用案例提供最低权限访问。当提供的其中一种 AWS 托管权限不起作用时,您可以创建自己的客户托管权限

客户托管权限是您通过精确指定可以在哪些条件下使用 AWS RAM 共享的资源执行哪些操作来创建和维护的托管权限。例如,您想限制 Amazon VPC IP 地址管理器 (IPAM) 池的读取权限,这有助于您大规模管理 IP 地址。您可以为开发人员创建客户托管权限来分配 IP 地址,但不能查看其他开发人员账户分配的 IP 地址范围。您可以遵循最低权限相关的最佳实践,仅授予在共享资源上执行任务所需的权限。

此外,您可以根据需要更新或删除客户托管权限。

创建客户托管权限

客户托管权限特定于 AWS 区域。确保在相应的区域创建此客户托管权限。

Console
要创建客户托管权限,请执行以下操作:
  1. 请执行下列操作之一:

  2. 对于客户托管权限详细信息,请输入客户托管权限名称。

  3. 选择此托管权限适用的资源类型。

  4. 对于策略模板,定义允许对此资源类型执行哪些操作。

    • 您可以选择导入托管权限,以使用现有托管权限中的操作。

    • 在可视化编辑器中,选择或取消选择访问级别信息以满足您的要求。

    • 使用 JSON 编辑器添加或修改条件。

  5. (可选)要将标签附加到托管权限,请为标签输入标签键和值。要添加其他标签,请选择添加新标签。根据需要重复上述步骤。

  6. 完成后,选择创建客户托管权限

AWS CLI
要创建客户托管权限,请执行以下操作:
  • 运行 create-permission 命令,并指定名称、客户托管权限适用的资源类型以及策略模板正文文本。

    以下示例命令为 imagebuilder:Component 资源类型创建托管权限。

    $ aws ram create-permission \ --name TestCMP \ --resource-type imagebuilder:Component \ --policy-template "{\"Effect\":\"Allow\",\"Action\":[\"imagebuilder:ListComponents\"]}" { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/TestCMP", "version": "1", "defaultVersion": true, "isResourceTypeDefault": false, "name": "TestCMP", "resourceType": "imagebuilder:Component", "status": "ATTACHABLE", "creationTime": 1680033769.401, "lastUpdatedTime": 1680033769.401 } }

创建新版客户托管权限

如果客户托管权限的使用案例发生变化,则您可以创建新版托管权限。这不会影响您现有的资源共享,只会影响未来使用此客户托管权限的新资源共享。

每个托管权限最多可以有五个版本,但您只能关联默认版本。

Console
要创建客户托管权限的新版本,请执行以下操作:
  1. 导航到托管权限库

  2. 客户托管筛选托管权限列表,或搜索要更改的客户托管权限的名称。

  3. 在托管权限详细信息页面的托管权限版本部分下,选择创建版本

  4. 对于策略模板,您可以使用可视化编辑器或 JSON 编辑器,添加或删除操作和条件。

    您还可以选择导入托管权限以使用现有的策略模板。

  5. 完成后,在页面底部选择创建版本

AWS CLI
要创建客户托管权限的新版本,请执行以下操作:
  1. 找到要创建新版本的托管权限的 Amazon 资源名称 (ARN)。为此,使用 --permission-type CUSTOMER_MANAGED 参数调用 list-permissions,以便仅包含客户托管权限。

    $ aws ram-cmp list-permissions --permission-type CUSTOMER_MANAGED { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/TestCMP", "version": "2", "defaultVersion": true, "isResourceTypeDefault": false, "name": "TestCMP", "permissionType": "CUSTOMER_MANAGED", "resourceType": "imagebuilder:Component", "status": "ATTACHABLE", "creationTime": 1680035597.346, "lastUpdatedTime": 1680035597.346 } ] }
  2. 获得 ARN 后,您可以调用 create-permission-version 操作并提供更新的策略模板。

    $ aws ram create-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/TestCMP \ --policy-template {"Effect":"Allow","Action":["imagebuilder:ListComponents"]} { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/TestCMP", "version": "2", "defaultVersion": true, "isResourceTypeDefault": false, "name": "TestCMP", "status": "ATTACHABLE", "resourceType": "imagebuilder:Component", "permission": "{\"Effect\":\"Allow\",\"Action\":[\"imagebuilder:ListComponents\"]}", "creationTime": 1680038973.79, "lastUpdatedTime": 1680038973.79 } }

    输出包括新版本的版本号。

选择其他版本作为客户托管权限的默认版本

您可以将其他客户托管权限版本设置为新的默认版本。

Console
要为客户托管权限设置新的默认版本,请执行以下操作:
  1. 导航到托管权限库

  2. 客户托管筛选托管权限列表,或搜索要更改的客户托管权限的名称。

  3. 在客户托管权限详细信息页面的托管权限版本部分下,使用下拉列表选择要设置为新默认版本的版本。

  4. 选择设置为默认版本

  5. 显示对话框时,确认您希望此版本成为所有使用此客户托管权限的新资源共享的默认版本。如果您同意,请选择设置为默认版本

AWS CLI
要为客户托管权限设置新的默认版本,请执行以下操作:
  1. 通过调用 list-permission-versions,找到要设置为默认版本的版本号。

    以下示例命令将检索指定的托管权限的当前版本。

    $ aws ram list-permission-versions \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/TestCMP { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/TestCMP", "version": "1", "defaultVersion": false, "isResourceTypeDefault": false, "name": "TestCMP", "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "resourceType": "imagebuilder:Component", "status": "UNATTACHABLE", "creationTime": 1680033769.401, "lastUpdatedTime": 1680035597.345 }, { "arn": "arn:aws:ram:us-east-1:123456789012:permission/TestCMP", "version": "2", "defaultVersion": true, "isResourceTypeDefault": false, "name": "TestCMP", "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "resourceType": "imagebuilder:Component", "status": "ATTACHABLE", "creationTime": 1680035597.346, "lastUpdatedTime": 1680035597.346 } ] }
  2. 将版本号设置为默认版本号后,您可以调用 set-default-permission-version 操作。

    $ aws ram-cmp set-default-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/TestCMP \ --version 2

    如果成功,该命令不返回任何输出。您可以再次运行 list-permission-versions,并验证所选版本的 defaultVersion 字段现在是否设置为 true

删除客户托管权限版本

一个客户托管权限最多可以有五个版本。当您不再需要或不使用版本时,可以将其删除。您无法删除客户托管权限的默认版本。已删除的版本在控制台中最多可显示两个小时,并且处于已删除状态,然后系统才会将其完全删除。

Console

要删除客户托管权限版本,请执行以下操作:

  1. 导航到托管权限库

  2. 客户托管筛选托管权限列表,或者搜索包含您要删除的版本的客户托管权限的名称。

  3. 确保要删除的版本不是当前默认版本。

  4. 对于页面的版本部分,选择关联的资源共享选项卡,查看是否有共享使用此版本。

    如果有任何关联共享,则您必须先更改客户托管权限版本,然后才能删除此版本。

  5. 选择版本部分右侧的删除版本

  6. 在确认对话框中,选择删除,确认您要删除此版本的客户托管权限。

    如果您不想删除此版本的客户托管权限,请选择取消

AWS CLI
要删除客户托管权限的一个版本,请执行以下操作:
  1. 调用 list-permission-versions 操作来检索可用的版本号。

  2. 获得版本号后,将其作为参数提供给 delete-permission-version

    $ aws ram-cmp delete-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/TestCMP \ --version 1

    如果成功,该命令不返回任何输出。您可以再次运行 list-permission-versions,并验证输出中是否不再包含该版本。

删除客户托管权限

如果不再需要或不使用客户托管权限,可以将其删除。您无法删除与资源共享关联的客户托管权限。已删除的客户托管权限将在两小时后消失。在此之前,它仍在托管权限库中可见,且状态为已删除。

Console

要删除客户托管权限,请执行以下操作:

  1. 导航到托管权限库

  2. 客户托管筛选托管权限列表,或搜索要删除的客户托管权限的名称。

  3. 在选择客户托管权限之前,确认托管权限列表中有 0 个关联共享。

    如果仍有与托管权限关联的资源共享,则您必须先为所有资源共享分配另一个托管权限,然后才能继续。

  4. 在客户托管权限详细信息页面右上角,选择删除托管权限

  5. 显示确认对话框时,选择删除以删除托管权限。

AWS CLI
要删除客户托管权限,请执行以下操作:
  1. 通过 --permission-type CUSTOMER_MANAGED 参数调用 list-permissions,以便仅包含客户托管权限,从而查找要删除的托管权限的 ARN。

    $ aws ram-cmp list-permissions --permission-type CUSTOMER_MANAGED { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/TestCMP", "version": "2", "defaultVersion": true, "isResourceTypeDefault": false, "name": "TestCMP", "permissionType": "CUSTOMER_MANAGED", "resourceType": "imagebuilder:Component", "status": "ATTACHABLE", "creationTime": 1680035597.346, "lastUpdatedTime": 1680035597.346 } ] }
  2. 获得要删除的托管权限的 ARN 后,将其作为参数提供给 delete-permission

    $ aws ram delete-permission \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/TestCMP { "returnValue": true, "permissionStatus": "DELETING" }