

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

# 在中创建和使用客户托管权限 Amazon RAM
<a name="create-customer-managed-permissions"></a>

Amazon Resource Access Manager (Amazon RAM) 为您可以共享的每种资源类型提供至少一个 Amazon 托管权限。但是，这些托管权限可能不会为您的共享使用案例提供[最低权限访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。当提供的 Amazon 托管权限之一不起作用时，您可以创建自己的*客户托管权限*。

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

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

**Topics**
+ [创建客户托管权限](#create_cmp)
+ [创建新版客户托管权限](#update_mp)
+ [选择其他版本作为客户托管权限的默认版本](#set_new_mp_default_version)
+ [删除客户托管权限版本](#delete_mp_version)
+ [删除客户托管权限](#delete_mp)

## 创建客户托管权限
<a name="create_cmp"></a>

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

------
#### [ Console ]

**要创建客户托管权限，请执行以下操作：**

1. 请执行以下操作之一：
   + 导航到**[托管权限库](https://console.amazonaws.cn/ram/home#Permissions:)**，然后选择**创建客户托管权限**。
   + 直接导航到控制台中的**[创建客户托管权限](https://console.amazonaws.cn/ram/home#CreatePermission:)**页面。

1. 对于**客户托管权限详细信息**，请输入客户托管权限名称。

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

1. 对于**策略模板**，定义允许对此资源类型执行哪些操作。
   + 您可以选择**导入托管权限**，以使用现有托管权限中的操作。
   + 在可视化编辑器中，选择或取消选择访问级别信息以满足您的要求。
   + 使用 **JSON 编辑器**添加或修改条件。

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

1. 完成后，选择**创建客户托管权限**。

------
#### [ Amazon CLI ]

**要创建客户托管权限，请执行以下操作：**
+ 运行 [create-permission](https://docs.amazonaws.cn/cli/latest/reference/ram/create-permission.html) 命令，并指定名称、客户托管权限适用的资源类型以及策略模板正文文本。

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

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

------

## 创建新版客户托管权限
<a name="update_mp"></a>

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

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

------
#### [ Console ]

**要创建客户托管权限的新版本，请执行以下操作：**

1. 导航到**[托管权限库](https://console.amazonaws.cn/ram/home#Permissions:)**。

1. 按**客户托管**筛选托管权限列表，或搜索要更改的客户托管权限的名称。

1. 在托管权限详细信息页面的**托管权限版本**部分下，选择**创建版本**。

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

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

1. 完成后，在页面底部选择**创建版本**。

------
#### [ Amazon CLI ]

**要创建客户托管权限的新版本，请执行以下操作：**

1. 找到要创建新版本的托管权限的 Amazon 资源名称（ARN）。为此，使用 `--permission-type CUSTOMER_MANAGED` 参数调用 [list-permissions](https://docs.amazonaws.cn/cli/latest/reference/ram/list-permissions.html)，以便仅包含客户托管权限。

   ```
   $ aws ram-cmp list-permissions --permission-type CUSTOMER_MANAGED
   {
       "permissions": [
           {
               "arn": "arn:aws:ram:cn-north-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
           }
       ]
   }
   ```

1. 获得 ARN 后，您可以调用[create-permission-version](https://docs.amazonaws.cn/cli/latest/reference/ram/create-permission-version.html)操作并提供更新的策略模板。

   ```
   $ aws ram create-permission-version \
       --permission-arn arn:aws:ram:cn-north-1:123456789012:permission/TestCMP \
       --policy-template {"Effect":"Allow","Action":["imagebuilder:ListComponents"]}
   {
       "permission": {
           "arn": "arn:aws:ram:cn-north-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
       }
   }
   ```

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

------

## 选择其他版本作为客户托管权限的默认版本
<a name="set_new_mp_default_version"></a>

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

------
#### [ Console ]

**要为客户托管权限设置新的默认版本，请执行以下操作：**

1. 导航到**[托管权限库](https://console.amazonaws.cn/ram/home#Permissions:)**。

1. 按**客户托管**筛选托管权限列表，或搜索要更改的客户托管权限的名称。

1. 

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

1. 选择**设置为默认版本**。

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

------
#### [ Amazon CLI ]

**要为客户托管权限设置新的默认版本，请执行以下操作：**

1. 通过调用查找要设置为默认版本的版本号[list-permission-versions](https://docs.amazonaws.cn/cli/latest/reference/ram/list-permission-versions.html)。

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

   ```
   $ aws ram list-permission-versions \
       --permission-arn arn:aws:ram:cn-north-1:123456789012:permission/TestCMP
   {
       "permissions": [
           {
               "arn": "arn:aws:ram:cn-north-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:cn-north-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
           }
       ]
   }
   ```

1. 将版本号设置为默认值后，可以调用该[set-default-permission-version](https://docs.amazonaws.cn/cli/latest/reference/ram/set-default-permission-version.html)操作。

   ```
   $ aws ram-cmp set-default-permission-version \
       --permission-arn arn:aws:ram:cn-north-1:123456789012:permission/TestCMP \
       --version 2
   ```

   如果成功，该命令不返回任何输出。您可以[list-permission-versions](https://docs.amazonaws.cn/cli/latest/reference/ram/list-permission-versions.html)再次运行并验证所选版本的`defaultVersion`字段现在是否设置为`true`。

------

## 删除客户托管权限版本
<a name="delete_mp_version"></a>

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

------
#### [ Console ]

 **要删除客户托管权限版本，请执行以下操作：**

1. 导航到**[托管权限库](https://console.amazonaws.cn/ram/home#Permissions:)**。

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

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

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

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

1. 选择**版本**部分右侧的**删除版本**。

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

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

------
#### [ Amazon CLI ]

**要删除客户托管权限的一个版本，请执行以下操作：**

1. 调用[list-permission-versions](https://docs.amazonaws.cn/cli/latest/reference/ram/list-permission-versions.html)操作以检索可用的版本号。

1. 获得版本号后，将其作为参数提供给[delete-permission-version](https://docs.amazonaws.cn/cli/latest/reference/ram/delete-permission-version.html)。

   ```
   $ aws ram-cmp delete-permission-version \
       --permission-arn arn:aws:ram:cn-north-1:123456789012:permission/TestCMP \
       --version 1
   ```

   如果成功，该命令不返回任何输出。您可以[list-permission-versions](https://docs.amazonaws.cn/cli/latest/reference/ram/list-permission-versions.html)再次运行并验证输出中是否不再包含该版本。

------

## 删除客户托管权限
<a name="delete_mp"></a>

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

------
#### [ Console ]

 **要删除客户托管权限，请执行以下操作：**

1. 导航到**[托管权限库](https://console.amazonaws.cn/ram/home#Permissions:)**。

1. 按**客户托管**筛选托管权限列表，或搜索要删除的客户托管权限的名称。

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

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

1. 在客户托管权限详细信息页面右上角，选择**删除托管权限**。

1. 显示确认对话框时，选择**删除**以删除托管权限。

------
#### [ Amazon CLI ]

**要删除客户托管权限，请执行以下操作：**

1. 通过 `--permission-type CUSTOMER_MANAGED` 参数调用 [list-permissions](https://docs.amazonaws.cn/cli/latest/reference/ram/list-permissions.html)，以便仅包含客户托管权限，从而查找要删除的托管权限的 ARN。

   ```
   $ aws ram-cmp list-permissions --permission-type CUSTOMER_MANAGED
   {
       "permissions": [
           {
               "arn": "arn:aws:ram:cn-north-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
           }
       ]
   }
   ```

1. 获得要删除的托管权限的 ARN 后，将其作为参数提供给 [delete-permission](https://docs.amazonaws.cn/cli/latest/reference/ram/delete-permission.html)。

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

------