

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

# 选项 1：应用程序可以扮演与 IAM Roles Anywhere 配置文件关联的任何角色
<a name="option-1"></a>

在这种情况下，已在 AWS Certificate Manager (ACM) 中从 AWS 私有证书颁发机构 实例配置了两个证书，并与需要 AWS 访问资源的应用程序共享。这些应用程序可以扮演与 IAM Roles Anywhere 个人资料关联的任何角色。这是因为信任策略并未限制哪个应用程序可以假设它。

**注意**  
在这种情况下，不需要应用程序具有单独的证书。他们可以共享一个证书。

当应用程序担任角色时，权限是 IAM 角色和 IAM Roles Anywhere 配置文件中明确允许的权限的汇合。使用这种方法，您可以通过 IAM Roles Anywhere 配置文件限制会话权限，无论 IAM 角色中允许的其他权限如何。

下图显示了每个应用程序拥有的访问权限。应用程序被拒绝访问某些 AWS 资源，因为没有明确授予它们在 IAM 角色和 IAM Roles Anywhere 配置文件中的访问权限。如果证书助手调用包含角色 1 的 Amazon 资源名称 (ARN)，则该应用程序将获得临时安全证书，允许其**通过****角色** 1 **访问存储桶** 1。如果证书助手调用包含**角色** 2 的 ARN，则会向应用程序授予临时安全证书，允许其**通过**角色 2 **访问存储桶** 2。

![应用程序使用相同的证书，并且可以访问多个角色。配置文件限制访问权限。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/certificate-based-access-controls/images/option-1-overview.png)


**角色 1** 和**角色 2** 信任策略配置为 IAM Roles Anywhere 允许代入角色、设置源身份和标记会话。以下是一个信任策略示例，允许应用程序承担与 IAM Roles Anywhere 配置文件关联的任何角色：

```
{
  "Version": "2012-10-17", 		 	 	 		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "rolesanywhere.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity",
        "sts:TagSession"
      ],
      "Condition": {
        "StringEquals": {
          "sts:SourceIdentity": [
            "${sourceIdentityPrefix}${sourceIdentityValue}"
          ]
        }
      }
    }
  ]
}
```

有关角色信任策略以及如何修改此示例的更多信息，请参阅 IAM Roles Anywhere 文档中的[信任策略](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/trust-model.html#trust-policy)。

**应用程序 1 和应用程序** **2** 的示例角色和配置文件策略包含在本指南的 “[附录：配置文件和角色策略示](appendix-sample-policies.md)例” 部分中。