

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

# 选项 2：应用程序只能扮演信任策略允许的角色
<a name="option-2"></a>

在此场景中，已在 AWS Certificate Manager (ACM) 中从需要访问资源的应用程序配置了两个证书， AWS 私有证书颁发机构 并与这些应用程序共享。 AWS **应用程序 1** 只能担任**角色 1**，而**应用程序 2** 只能担任**角色 2**。在角色信任策略中，您可以将证书主题字段配置为条件。这些条件允许应用程序仅扮演特定的角色。由于角色权限的原因，只有**应用程序 1** 可以访问**存储桶 1**，只有**应用程序 2** 可以访问**存储桶 2**。下图显示了每个应用程序拥有的访问权限。

![使用不同证书且只能扮演特定角色的应用程序。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/certificate-based-access-controls/images/option-2-overview.png)


在此选项中，您可以将信任策略配置为`AssumeRole`仅在满足特定证书属性时才允许。示例角色信任策略演示了如何将该`Condition`部分配置为需要特定的证书公用名 (`CN`)，**角色 1 和角色** **2** 的公用名不同。每个应用程序都可以扮演特定的角色 IAM Roles Anywhere ，因为它们之间存在信任锚关系 AWS 私有 CA。这种方法有助于防止对角色和数据的未经授权的访问，因为应用程序无法扮演任何与目标配置文件关联的角色。例如，您可以将业务数据隔离到不同的存储桶中，将角色配置为仅允许访问其中一个存储桶，然后在信任策略中使用基于证书的访问控制来定义应用程序可以扮演的角色。

以下**角色 1** 的信任策略示例有一个条件，即只有当证书名称为`application-1.com`且信任锚点 Amazon 资源名称 (ARN) 匹配时，才允许担任角色：

```
{
  "Version": "2012-10-17", 		 	 	 		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "rolesanywhere.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity",
        "sts:TagSession"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/x509Subject/CN": "application-1.com"
        },
        "ArnEquals": {
          "aws:SourceArn": [
            "arn:aws:rolesanywhere:<region>:<account-ID>:trust-anchor/<TA_ID>"
          ]
        }
      }
    }
  ]
}
```

以下**角色 2** 的信任策略示例有一个条件，即只有当证书名称为`application-2.com`且信任锚点 ARN 匹配时，才允许担任角色：

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "rolesanywhere.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity",
                "sts:TagSession"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalTag/x509Subject/CN": "application-2.com"
                },
                "ArnEquals": {
                    "aws:SourceArn": [
                        "arn:aws:rolesanywhere:<region>:<account-ID>:trust-anchor/<TA_ID>"
                    ]
                }
            }
        }
    ]
}
```

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

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