

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

# 如何 AWS RAM 与 IAM 配合使用
<a name="security-iam-policies"></a>

默认情况下，IAM 委托人无权创建或修改 AWS RAM 资源。要允许 IAM 主体创建或修改资源和执行任务，需执行以下一个步骤。这些操作授予使用特定资源和 API 操作的权限。

要提供访问权限，请为您的用户、组或角色添加权限：
+ 中的用户和群组 AWS IAM Identity Center：

  创建权限集合。按照《AWS IAM Identity Center 用户指南》**中[创建权限集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)的说明进行操作。
+ 通过身份提供商在 IAM 中托管的用户：

  创建适用于身份联合验证的角色。按照《IAM 用户指南》**中[针对第三方身份提供商创建角色（联合身份验证）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)的说明进行操作。
+ IAM 用户：
  + 创建您的用户可以担任的角色。按照《IAM 用户指南》**中[为 IAM 用户创建角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)的说明进行操作。
  + （不推荐使用）将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》**中[向用户添加权限（控制台）](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)中的说明进行操作。

AWS RAM 提供了多种 AWS 托管策略，您可以使用这些策略来满足许多用户的需求。有关这些规则组的更多信息，请参阅 [AWS 的托管策略 AWS Resource Access Manager](security-iam-awsmanpol.md)。

如果您需要对授予用户的权限进行更精细的控制，可以在 IAM 控制台中创建自己的策略。有关创建策略并将其附加到 IAM 角色和用户的信息，请参阅《AWS Identity and Access Management 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

以下各节提供了构建 IAM 权限策略的 AWS RAM 具体细节。

**Contents**
+ [策略结构](#structure)
  + [效果](#iam-policies-effect)
  + [Action](#iam-policies-action)
  + [资源](#iam-policies-resource)
  + [条件](#iam-policies-condition)

## 策略结构
<a name="structure"></a>

IAM 权限策略是一个 JSON 文档，其中包含以下语句：Effect、Action、Resource 和 Condition。IAM 策略通常采用以下形式。

```
{
    "Statement":[{
        "Effect":"<effect>",
        "Action":"<action>",
        "Resource":"<arn>",
        "Condition":{
            "<comparison-operator>":{
                "<key>":"<value>"
            }
        }
    }]
}
```

### 效果
<a name="iam-policies-effect"></a>

*Effect* 语句指定策略是允许还是拒绝主体执行操作的权限。可能的值包括：`Allow` 和 `Deny`。

### Action
<a name="iam-policies-action"></a>

Acti *on* 语句指定了策略允许或拒绝权限的 AWS RAM API 操作。有关所允许操作的完整列表，请参阅《IAM 用户指南》**中的 [AWS Resource Access Manager定义的操作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsresourceaccessmanager.html#awsresourceaccessmanager-actions-as-permissions)。

### 资源
<a name="iam-policies-resource"></a>

R *esou* rce 语句指定了受策略影响的 AWS RAM 资源。要在语句中指定资源，您需要使用其唯一的 Amazon 资源名称（ARN）。有关所允许操作的完整列表，请参阅《IAM 用户指南》**中的 [AWS Resource Access Manager定义的资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsresourceaccessmanager.html#awsresourceaccessmanager-resources-for-iam-policies)。

### 条件
<a name="iam-policies-condition"></a>

*Condition* 语句是可选语句。它们可以用来进一步完善政策的适用条件。 AWS RAM 支持以下条件键：
+ `aws:RequestTag/${TagKey}` - 测试服务请求是否包含具有指定标签键的标签并具有指定值。
+ `aws:ResourceTag/${TagKey}` - 测试服务请求处理的资源是否附加了标签（其中包含您在策略中指定的标签键）。

  以下示例条件检查服务请求中引用的资源是否附加键名称为“Owner”、值为“Dev Team”的标签。

  ```
  "Condition" : { 
      "StringEquals" : {
          "aws:ResourceTag/Owner" : "Dev Team" 
      } 
  }
  ```
+ `aws:TagKeys` - 指定在创建或标记资源共享时必须使用的标签键。
+ `ram:AllowsExternalPrincipals` - 测试服务请求中的资源共享是否允许与外部主体共享。外部委托人是指您的组织 AWS 账户 外部 AWS Organizations。如果其评估结果为 `False`，则您只能与同一组织中的账户共享此资源共享。
+ `ram:PermissionArn` - 测试在服务请求中指定的权限 ARN 是否与您在策略中指定的 ARN 字符串相匹配。
+ `ram:PermissionResourceType` - 测试在服务请求中指定的权限是否对您在策略中指定的资源类型有效。使用[可共享资源类型](shareable.md)列表中显示的格式指定资源类型。
+ `ram:Principal` - 测试在服务请求中指定的主体 ARN 是否与您在策略中指定的 ARN 字符串相匹配。
+ `ram:RequestedAllowsExternalPrincipals` - 测试服务请求是否包含 `allowExternalPrincipals` 参数以及其参数是否与您在策略中指定的值相匹配。
+ `ram:RequestedResourceType` - 测试正在处理的资源的资源类型是否与您在策略中指定的资源类型字符串相匹配。使用[可共享资源类型](shareable.md)列表中显示的格式指定资源类型。
+ `ram:ResourceArn` - 测试服务请求正在处理的资源的 ARN 是否与您在策略中指定的 ARN 相匹配。
+ `ram:ResourceShareName` - 测试服务请求正在处理的资源共享的名称是否与您在策略中指定的字符串相匹配。
+ `ram:ShareOwnerAccountId` - 测试服务请求正在处理的资源共享的账户 ID 编号是否与您在策略中指定的字符串相匹配。