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

AWS::SecretsManager::ResourcePolicy

将指定的基于资源的权限策略内容附加到密钥。基于资源的策略是可选的。或者,您也可以使用基于身份的 IAM 策略,在策略语句 Resources 元素中指定密钥的 Amazon 资源名称 (ARN)。您也可以将基于身份的策略和基于资源的策略结合使用。受影响的用户和角色将获得所有相关策略允许的权限。

语法

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

JSON

{ "Type" : "AWS::SecretsManager::ResourcePolicy", "Properties" : { "ResourcePolicy" : Json, "SecretId" : String } }

YAML

Type: AWS::SecretsManager::ResourcePolicy Properties: ResourcePolicy: Json SecretId: String

属性

ResourcePolicy

指定根据基于资源的策略的语法和句法构造的 JSON 对象。该策略指定谁可以访问或管理该密钥和关联的版本。有关如何设置 JSON 对象格式以作为该资源类型的参数的信息,请参阅《AWS Secrets Manager 用户指南》中的将基于资源的策略用于 Secrets Manager。这些相同的规则在此处适用。

必需:是

类型:Json

Update requires: No interruption

SecretId

指定要附加基于资源的权限策略的密钥的 Amazon 资源名称 (ARN) 或友好名称。

重要

如果您使用该属性更改基于资源的现有策略的 SecretId,Secrets Manager 将从原始密钥中删除该策略,然后将该策略附加到具有指定的 SecretId 的密钥。这会导致更改两个密钥的权限。

必需:是

类型:字符串

Update requires: Replacement

返回值

Ref

在将 AWS::SecretsManager::ResourcePolicy 资源的逻辑 ID 传递给内部 Ref 函数时,该函数返回配置的密钥的 ARN,例如:

arn:aws:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c

这样,您以后可以从堆栈模板中的另一个资源的定义中引用您在同一模板的某个部分中创建的密钥。通常,您将它用于 AWS::SecretsManager::SecretTargetAttachment 资源类型。

有关使用 Ref 函数的更多信息,请参阅 Ref

示例

将基于资源的策略附加到 RDS 数据库实例密钥

以下示例说明了如何将基于资源的策略附加到指定的密钥。JSON 请求字符串输入和响应输出以空格和换行符格式显示以提高可读性。以单行 JSON 字符串的形式提交输入。

JSON

{ "MySecret": { "Type": "AWS::SecretsManager::Secret", "Properties": { "Description": "This is a secret that I want to attach a resource-based policy to" } }, "MySecretResourcePolicy": { "Type": "AWS::SecretsManager::ResourcePolicy", "Properties": { "SecretId": { "Ref": "MySecret" }, "ResourcePolicy": { "Version": "2012-10-17", "Statement": [ { "Resource": "*", "Action": "secretsmanager:DeleteSecret", "Effect": "Deny", "Principal": { "AWS": { "Fn::Sub": "arn:aws:iam::${AWS::AccountId}:root" } } } ] } } } } }

YAML

MySecret: Type: 'AWS::SecretsManager::Secret' Properties: Description: This is a secret that I want to attach a resource-based policy to MySecretResourcePolicy: Type: 'AWS::SecretsManager::ResourcePolicy' Properties: SecretId: !Ref MySecret ResourcePolicy: Version: 2012-10-17 "Properties": { "Description": "This is a secret that I want to attach a resource-based policy to", "MySecretResourcePolicy": { "Properties": { "SecretId": { "Ref": "MySecret" }, "ResourcePolicy": { "Version": "2019-10-19", "Statement": [ { "Resource": "*", "Action": "secretsmanager:DeleteSecret", "Effect": "Deny", "Principal": { "AWS": { "Fn::Sub": "arn:aws:iam::${AWS::AccountId}:root" } } } ] } }, "Type": "AWS::SecretsManager::ResourcePolicy" } }, "Type": "AWS::SecretsManager::Secret" } }

YAML

MySecret: Type: 'AWS::SecretsManager::Secret' Properties: Description: This is a secret that I want to attach a resource-based policy to MySecretResourcePolicy: Type: 'AWS::SecretsManager::ResourcePolicy' Properties: SecretId: !Ref MySecret ResourcePolicy: Version: 2012-10-17 Statement: - Resource: '*' Action: 'secretsmanager:DeleteSecret' Effect: Deny Principal: AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:root'

另请参阅