

# Amazon CloudFormation 服务角色
<a name="using-iam-servicerole"></a>

*服务角色*是一个 Amazon Identity and Access Management（IAM）角色，允许 CloudFormation 代表您调用堆栈中的资源。您可以指定一个将允许 CloudFormation 创建、更新或删除堆栈资源的 IAM 角色。默认情况下，CloudFormation 会使用根据您的用户凭证为堆栈操作生成的临时会话。如果指定了服务角色，CloudFormation 将使用该角色的凭证。

使用服务角色可以显式指定 CloudFormation 可执行的操作，这些操作可能不会总是与您或其他用户可执行的操作相同。例如，您可能具有管理员权限，但您可以限制 CloudFormation 的访问权限以仅允许 Amazon EC2 操作。

您可以使用 IAM 服务创建服务角色及其权限策略。有关创建服务角色的更多信息，请参阅《IAM 用户指南》**中的[创建向 Amazon 服务委派权限的角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-service.html)。将 CloudFormation (`cloudformation.amazonaws.com`) 指定为可代入该角色的服务。

要将服务角色与堆栈关联，请在创建堆栈时指定角色。有关更多信息，请参阅 [配置堆栈选项](cfn-console-create-stack.md#configure-stack-options)。您还可以在控制台中更新堆栈时或通过 API [https://docs.amazonaws.cn/AWSCloudFormation/latest/APIReference/API_DeleteStack.html](https://docs.amazonaws.cn/AWSCloudFormation/latest/APIReference/API_DeleteStack.html) 堆栈时更改服务角色。在指定服务角色之前，请确保您具有传递该角色的权限 (`iam:PassRole`)。`iam:PassRole` 权限指定您可以使用哪些角色。有关更多信息，请参阅《IAM 用户指南》**中的[向用户授予权限以将角色传递给 Amazon 服务](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_use_passrole.html)。

**重要**  
在您指定服务角色后，CloudFormation 在该堆栈上执行的所有操作将始终使用该角色。创建堆栈后，无法删除附加到堆栈的服务角色。拥有权限，可对此堆栈执行操作的其他用户可以使用该角色，无论这些用户是否拥有 `iam:PassRole` 权限。如果该角色包含用户不应具有的权限，则您可能无意中提升了用户的权限。确保该角色授予最小权限。有关更多信息，请参阅《*IAM 用户指南*》中的[应用最低权限许可](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。