

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

# 在 AMS 中使用 CFN 采集或堆栈更新 CTs 自动部署 IAM
<a name="cfn-ingest-iam-deploy"></a>

您可以使用这些 AMS 变更类型在多账户着陆区 (MALZ) 和单账户着陆区 (SALZ) 中部署 IAM 角色（`AWS::IAM::Role`资源）：
+ 部署 \$1 摄取 \$1 从 CloudFormation 模板堆栈 \$1 创建 (ct-36cn2avfrrj9v)
+ 管理 \$1 自定义堆栈 \$1 来自 CloudFormation 模板的堆栈 \$1 更新 (ct-361tlo1k7339x)
+ 管理 \$1 自定义堆栈 \$1 来自 CloudFormation 模板的堆栈 \$1 批准和更新 (ct-1404e21baa2ox)

**对您的 CFN 模板中的 IAM 角色执行的验证：**
+ **ManagedPolicyArns**: 该属性**ManagedPolicyArns**不得存在于中`AWS::IAM::Role`。该验证不允许将托管策略附加到正在置备的角色。相反，可以通过属性 Policies 使用内联策略来管理角色的权限。
+ **PermissionsBoundary**: 用于为角色设置权限边界的策略只能是 AMS 提供的托管策略:`AWSManagedServices_IAM_PermissionsBoundary`。此策略起到防护栏的作用，可保护 AMS 基础设施资源不被使用所配置的角色进行修改。使用此默认权限边界，AMS 提供的安全优势得以保留。

  `AWSManagedServices_IAM_PermissionsBoundary`（默认）为必填项，否则，请求将被拒绝。
+ **MaxSessionDuration**：可以为 IAM 角色设置的最大会话持续时间为 1 到 4 小时。AMS 技术标准要求客户接受会话持续时间超过 4 小时的风险。
+ **RoleName**：以下命名空间由 AMS 保留，不能用作 IAM 角色名称前缀：

  ```
  AmazonSSMRole,
  AMS,
  Ams,
  ams,
  AWSManagedServices,
  customer_developer_role,
  customer-mc-,
  Managed_Services,
  MC,
  Mc,
  mc,
  SENTINEL,
  Sentinel,
  sentinel,
  StackSet-AMS,
  StackSet-Ams,
  StackSet-ams,
  StackSet-AWS,
  StackSet-MC,
  StackSet-Mc,
  StackSet-mc
  ```
+ **策略**：IAM 角色中嵌入的内联策略只能包含一组 AMS 预先批准的 IAM 操作。这是允许使用（控制策略）创建 IAM 角色的所有 IAM 操作的上限。控制策略包括：
  +  AWS 托管策略中的所有操作 ReadOnlyAccess ，提供对所有资源 AWS 服务 和资源的只读访问权限
  + 以下操作仅限于跨账户 S3 操作，即允许的 S3 操作，只能对与正在创建的角色相同的账户中存在的资源执行：

    ```
    amscm:*,
    amsskms:*,
    lambda:InvokeFunction,
    logs:CreateLogStream,
    logs:PutLogEvents,
    s3:AbortMultipartUpload,
    s3:DeleteObject,
    s3:DeleteObjectVersion,
    s3:ObjectOwnerOverrideToBucketOwner,
    s3:PutObject,
    s3:ReplicateTags,
    secretsmanager:GetRandomPassword,
    sns:Publish
    ```

    通过 CFN ingest 创建或更新的任何 IAM 角色都可以允许此控制策略中列出的操作，或者允许范围从控制策略中列出的操作范围缩小（不那么宽松）的操作。目前，我们允许这些可归类为只读操作的安全 IAM 操作，以及上述无法完成 CTs 且按照 AMS 技术标准预先批准的非只读操作。
+ **AssumeRolePolicyDocument**：以下实体已获得预先批准，可以包含在信任策略中以承担正在创建的角色：
  + 同一账户中的任何 IAM 实体（角色、用户、根用户、STS 假设角色会话）都可以担任该角色。
  + 以下人员 AWS 服务 可以担任该角色：

    ```
    apigateway.amazonaws.com,
    autoscaling.amazonaws.com,
    cloudformation.amazonaws.com,
    codebuild.amazonaws.com,
    codedeploy.amazonaws.com,
    codepipeline.amazonaws.com,
    datapipeline.amazonaws.com,
    datasync.amazonaws.com,
    dax.amazonaws.com,
    dms.amazonaws.com,
    ec2.amazonaws.com,
    ecs-tasks.amazonaws.com,
    ecs.application-autoscaling.amazonaws.com,
    elasticmapreduce.amazonaws.com,
    es.amazonaws.com,
    events.amazonaws.com,
    firehose.amazonaws.com,
    glue.amazonaws.com,
    lambda.amazonaws.com,
    monitoring.rds.amazonaws.com,
    pinpoint.amazonaws.com,
    rds.amazonaws.com,
    redshift.amazonaws.com,
    s3.amazonaws.com,
    sagemaker.amazonaws.com,
    servicecatalog.amazonaws.com,
    sns.amazonaws.com,
    ssm.amazonaws.com,
    states.amazonaws.com,
    storagegateway.amazonaws.com,
    transfer.amazonaws.com,
    vmie.amazonaws.com
    ```
  + 同一账户中的 SAML 提供商可以担任该角色。目前，唯一支持的 SAML 提供商名称是`customer-saml`。

如果一项或多项验证失败，则 RFC 将被拒绝。RFC 拒绝原因示例如下：

```
{"errorMessage":"[ 'LambdaRole: The maximum session duration (in seconds) should be a numeric value in the range 3600 to 14400 (i.e. 1 to 4 hours).', 'lambda-policy: Policy document is too permissive.']","errorType":"ClientError"}
```

如果您在 RFC 验证或执行失败时需要帮助，请使用 RFC 信函与 AMS 联系。有关说明，请参阅 [RFC 通信和附件（控制台）](https://docs.aws.amazon.com/managedservices/latest/ctref/ex-rfc-correspondence.html)。如有任何其他问题，请提交服务请求。有关操作方法，请参阅[创建服务请求](https://docs.aws.amazon.com/managedservices/latest/userguide/gui-ex-create-service-request.html)。

**注意**  
作为我们的 IAM 验证的一部分，我们目前不强制执行任何 IAM 最佳实践。有关 IAM 最佳实践，请参阅 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

**创建具有更宽松操作的 IAM 角色或执行 IAM 最佳实践**

使用以下手动更改类型创建您的 IAM 实体：
+ 部署 \$1 高级堆栈组件 \$1 身份和访问管理 (IAM) Management \$1 创建实体或策略 (ct-3dpd8mdd9jn1r)
+ 管理 \$1 高级堆栈组件 \$1 身份和访问管理 (IAM) \$1 更新实体或策略 (ct-27tuth19k52b4)

我们建议您在提交这些手册之前阅读并理解我们的技术标准 RFCs。有关访问权限，请参阅[如何访问技术标准](https://docs.aws.amazon.com/managedservices/latest/ctref/rfc-security.html#rfc-sec-tech-standards-access)。

**注意**  
使用这些手动更改类型直接创建的每个 IAM 角色都属于自己的单独堆栈，并且不位于通过 CFN Ingest CT 创建其他基础设施资源的同一个堆栈中。

**当无法通过自动更改类型进行更新时，通过手动更改类型更新使用 CFN 提取创建的 IAM 角色**

使用管理 \$1 高级堆栈组件 \$1 身份和访问管理 (IAM) \$1 更新实体或策略 (ct-27tuth19k52b4) 更改类型。

**重要**  
通过手动 CT 对 IAM 角色的更新不会反映在 CFN 堆栈模板中，这会导致堆栈偏移。通过手动请求将角色更新到未通过我们验证的状态后，只要角色仍然不符合我们的验证，就无法再次使用堆栈更新 CT (ct-361tlo1k7339x) 对其进行进一步更新。只有当 CFN 堆栈模板符合我们的验证标准时，才能使用更新 CT。但是，只要不更新不符合我们验证的 IAM 资源并且 CFN 模板通过我们的验证，仍然可以通过堆栈更新 CT (ct-361tlo1k7339x) 更新堆栈。

**删除通过 AWS CloudFormation 采集创建的 IAM 角色**

如果要删除整个堆栈，请使用以下自动删除堆栈更改类型。有关说明，请参阅[删除堆栈](https://docs.aws.amazon.com/managedservices/latest/ctref/ex-stack-delete-col.html)：
+ 更改类型 ID：ct-0q0bic0ywqk6c
+ 分类：管理 \$1 标准堆栈 \$1 堆栈 \$1 删除和管理 \$1 高级堆栈组件 \$1 堆栈 \$1 删除

如果您想在不删除整个堆栈的情况下删除 IAM 角色，则可以从 CloudFormation 模板中移除 IAM 角色，然后使用更新的模板作为自动堆栈更新更改类型的输入：
+ 更改类型 ID：ct-361tlo1k7339x
+ 分类：管理 \$1 自定义堆栈 \$1 来自 CloudFormation 模板的堆栈 \$1 更新

有关说明，请参阅[更新 AWS CloudFormation 采集堆栈](https://docs.aws.amazon.com/managedservices/latest/appguide/ex-cfn-ingest-update-col.html)。