AWS::IAM::ManagedPolicy - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::IAM::ManagedPolicy

为您的 AWS 账户创建新的托管策略。

此操作使用版本标识符 v1 创建策略版本,并将 v1 设置为策略的默认版本。有关策略版本的更多信息,请参阅 IAM 用户指南 中的托管策略的版本控制

有关一般托管策略的更多信息,请参阅 IAM 用户指南 中的托管策略与内联策略

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::IAM::ManagedPolicy", "Properties" : { "Description" : String, "Groups" : [ String, ... ], "ManagedPolicyName" : String, "Path" : String, "PolicyDocument" : Json, "Roles" : [ String, ... ], "Users" : [ String, ... ] } }

YAML

Type: AWS::IAM::ManagedPolicy Properties: Description: String Groups: - String ManagedPolicyName: String Path: String PolicyDocument: Json Roles: - String Users: - String

属性

Description

策略的友好描述。

通常用于存储有关策略中定义的权限。例如,“Grants access to production DynamoDB tables (授予对生产 DynamoDB 表的访问权限)。”

策略描述是不可变的。在分配某个值后,无法更改此值。

必需:否

类型:字符串

最高1000

Update requires: Replacement

Groups

要将策略附加到组的名称(友好名称,而不是 ARN)。

该参数允许(通过其正则表达式模式)使用由大小写字母数字字符组成的字符串(不包含空格)。此外,还可以包含以下任何字符:_+=,.@-

必需:否

类型:字符串列表

最低1

最高128

模式[\w+=,.@-]+

Update requires: No interruption

ManagedPolicyName

策略的友好名称。

重要

如果指定一个名称,您将无法执行需要替换该资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

如果指定了名称,则必须指定 CAPABILITY_NAMED_IAM 值以确认模板的功能。有关更多信息,请参阅确认 AWS CloudFormation 模板中的 IAM 资源

重要

如果您在多个区域中重用同一模板,则为 IAM 资源命名会导致无法恢复的错误。为防止出现此情况,建议您使用 Fn::JoinAWS::Region 创建特定于区域的名称,如以下示例所示:{"Fn::Join": ["", [{"Ref": "AWS::Region"}, {"Ref": "MyResourceName"}]]}

必需:否

类型:字符串

Update requires: Replacement

Path

策略的路径。

有关路径的更多信息,请参阅 IAM 用户指南 中的 IAM 标识符

此参数为可选项。如果不指定路径,则默认为斜杠 (/)。

此参数允许(通过其正则表达式模式)使用字符串,该字符串由斜杠 (/) 本身组成,或者必须为以斜杠开头和结尾的字符串。此外,它可以包含从 ! (\u0021) 到 DEL 字符 (\u007F) 的任意 ASCII 字符,包括大多数标点符号字符、数字以及大写和小写字母。

必需:否

类型:字符串

最低1

最高512

模式((/[A-Za-z0-9\.,\+@=_-]+)*)/

Update requires: Replacement

PolicyDocument

要用作新策略内容的 JSON 策略文档。

您必须在 IAM 中提供 JSON 格式的策略。但是,对于使用 YAML 格式化的 AWS CloudFormation 模板,您可以提供 JSON 或 YAML 格式的策略。AWS CloudFormation 始终先将 YAML 策略转换为 JSON 格式,然后再将其提交到 IAM。

用于验证此参数的正则表达式模式为包含以下内容的字符串:

  • 任何可打印的 ASCII 字符,范围从空格字符 (\u0020) 到 ASCII 字符范围的末尾

  • Basic Latin 和 Latin-1 Supplement 字符集中的可打印字符(直到 \u00FF

  • 特殊字符制表符 (\u0009)、换行符 (\u000A) 和回车 (\u000D)

必需:是

类型:Json

最低1

最高131072

模式[\u0009\u000A\u000D\u0020-\u00FF]+

Update requires: No interruption

Roles

要将策略附加到的角色的名称(友好名称,而不是 ARN)。

该参数允许(通过其正则表达式模式)使用由大小写字母数字字符组成的字符串(不包含空格)。此外,还可以包含以下任何字符:_+=,.@-

注意

如果外部策略的角色 (例如 AWS::IAM::PolicyAWS::IAM::ManagedPolicy) 具有角色的 Ref,并且资源 (例如 AWS::ECS::Service) 具有同一角色的 Ref,请为该资源添加 DependsOn 属性,以便资源可以依赖该外部策略。此依赖关系确保该角色的策略在资源的整个生命周期内均可用。例如,当您删除一个具有 AWS::ECS::Service 资源的堆栈时,DependsOn 属性可确保在删除其角色的策略之前,AWS CloudFormation 会删除 AWS::ECS::Service 资源。

必需:否

类型:字符串列表

Update requires: No interruption

Users

要将策略附加到的 IAM 用户的名称(友好名称,而不是 ARN)。

该参数允许(通过其正则表达式模式)使用由大小写字母数字字符组成的字符串(不包含空格)。此外,还可以包含以下任何字符:_+=,.@-

必需:否

类型:字符串列表

最低1

最高64

模式[\w+=,.@-]+

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 ARN。

在以下示例中,Ref 函数将返回 CreateTestDBPolicy 托管策略的 ARN,如 arn:aws:iam::123456789012:policy/teststack-CreateTestDBPolicy-16M23YE3CS700

{ "Ref": "CreateTestDBPolicy" }

For more information about using the Ref function, see Ref.

示例

创建托管策略

以下示例创建一个托管策略并将其与 TestDBGroup 组关联。托管策略为用户授予创建 t2.micro 数据库实例的权限。数据库必须使用 MySQL 数据库引擎,且实例名称必须包含前缀 test

JSON

{ "CreateTestDBPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Properties": { "Description": "Policy for creating a test database", "Path": "/", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rds:CreateDBInstance", "Resource": { "Fn::Join": [ "", [ "arn:aws:rds:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":db:test*" ] ] }, "Condition": { "StringEquals": { "rds:DatabaseEngine": "mysql" } } }, { "Effect": "Allow", "Action": "rds:CreateDBInstance", "Resource": { "Fn::Join": [ "", [ "arn:aws:rds:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":db:test*" ] ] }, "Condition": { "StringEquals": { "rds:DatabaseClass": "db.t2.micro" } } } ] }, "Groups": [ "TestDBGroup" ] } } }

YAML

CreateTestDBPolicy: Type: 'AWS::IAM::ManagedPolicy' Properties: Description: Policy for creating a test database Path: / PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: 'rds:CreateDBInstance' Resource: !Join - '' - - 'arn:aws:rds:' - !Ref 'AWS::Region' - ':' - !Ref 'AWS::AccountId' - ':db:test*' Condition: StringEquals: 'rds:DatabaseEngine': mysql - Effect: Allow Action: 'rds:CreateDBInstance' Resource: !Join - '' - - 'arn:aws:rds:' - !Ref 'AWS::Region' - ':' - !Ref 'AWS::AccountId' - ':db:test*' Condition: StringEquals: 'rds:DatabaseClass': db.t2.micro Groups: - TestDBGroup

另请参阅

  • AWS Identity and Access Management API 参考 中的 CreatePolicy