

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

# 用于 ACME 证书自动化的 IAM
<a name="security-iam-acme"></a>

ACME 证书自动化使用 IAM 角色来授权证书的颁发和吊销。本节介绍了 ACME 的权限模型。

## PKI 管理员权限
<a name="security-iam-acme-admin"></a>

创建和管理 ACME 资源的 PKI 管理员需要以下权限：

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "acm:CreateAcmeEndpoint",
                "acm:DescribeAcmeEndpoint",
                "acm:ListAcmeEndpoints",
                "acm:UpdateAcmeEndpoint",
                "acm:DeleteAcmeEndpoint",
                "acm:CreateAcmeExternalAccountBinding",
                "acm:DescribeAcmeExternalAccountBinding",
                "acm:ListAcmeExternalAccountBindings",
                "acm:GetAcmeExternalAccountBindingCredentials",
                "acm:RevokeAcmeExternalAccountBinding",
                "acm:DeleteAcmeExternalAccountBinding",
                "acm:CreateAcmeDomainValidation",
                "acm:DescribeAcmeDomainValidation",
                "acm:ListAcmeDomainValidations",
                "acm:UpdateAcmeDomainValidation",
                "acm:DeleteAcmeDomainValidation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::{{account-id}}:role/{{AcmeIssuanceRole}}",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "acm-acme.amazonaws.com"
                }
            }
        }
    ]
}
```

## EAB 角色要求
<a name="security-iam-acme-eab-role"></a>

每个外部账户绑定都与一个 IAM 角色相关联。ACM 使用此角色授权使用绑定凭证进行身份验证的 ACME 客户端颁发和吊销证书。

**信任策略**

该角色必须信任 ACME 服务主体，授予`sts:AssumeRole``sts:TagSession`、和。`sts:SetSourceIdentity`以下信任策略还使用条件开启`sts:SourceIdentity`来仅允许 ACM 为 ACME 建立的会话（以开头的源身份）：`acm-acme-`

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "acm-acme.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:TagSession",
                "sts:SetSourceIdentity"
            ],
            "Condition": {
                "StringLikeIfExists": {
                    "sts:SourceIdentity": "acm-acme-*"
                }
            }
        }
    ]
}
```

**权限策略**

该角色需要权限才能执行您想要允许的证书操作。适用于直接 API 调用的相同 ACM 操作和条件键适用于此处：

```
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "acm:RequestCertificate",
            "acm:RevokeCertificate"
        ],
        "Resource": "*"
    }]
}
```

您可以使用支持的相同条件密钥来限制发放`acm:RequestCertificate`，例如`acm:DomainNames`或`acm:KeyAlgorithm`。有关更多信息，请参阅 [将条件键与 ACM 结合使用](acm-conditions.md)。

**角色会话名称和源标识**

当 ACM 担任该角色时，它会设置角色会话名称和源标识，这些名称和源标识将显示在 CloudTrail 日志中，您可以使用`sts:RoleSessionName`和`sts:SourceIdentity`条件键进行引用：
+ **在证书颁发和吊销**时 — 角色会话名称为`acme-request-{{request-id}}`，源身份为`acm-acme-{{acme-account-id}}`。
+ **在创建外部账户绑定时验证角色**时，角色会话名称为`acme-verification`，源身份为`acm-acme-verification`。

两个来源身份都以`acm-acme-`，因此信任策略中的`sts:SourceIdentity`条件允许两者兼而有之。ACM 还会在担任角色的会话上附加会话标签，包括、和。`acme-endpoint-arn` `acme-account-url` `acme-operation`

## SCP 兼容性
<a name="security-iam-acme-scp"></a>

由于 ACME 服务使用代入的角色进行标准 ACM API 调用，因此 Organiz Amazon ations 服务控制策略 (SCP) 是在证书颁发时强制执行的。如果 SCP 拒绝`acm:RequestCertificate`该账户，ACME 证书颁发也会失败。这为 ACME-issued 证书提供了与直接通过 ACM API 颁发的证书相同的监管控制。