本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudFormation 的 IAM 身分型政策範例
根據預設,使用者和角色沒有建立或修改 CloudFormation 資源的許可。他們也無法使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 AWS API 來執行任務。若要授予使用者對其所需資源執行動作的許可,IAM 管理員可以建立 IAM 政策。然後,管理員可以將 IAM 政策新增至角色,使用者便能擔任這些角色。如需詳細資訊,請參閱定義 CloudFormation 的 IAM 身分型政策。
下列範例顯示政策陳述式,您可以用來允許或拒絕使用一或多個 CloudFormation 動作的許可。
需要特定的範本 URL
下列政策僅授予使用https://s3.amazonaws.com/amzn-s3-demo-bucket/test.template
範本 URL 建立或更新堆疊的許可。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:UpdateStack"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudformation:TemplateUrl": [
"https://s3.amazonaws.com/amzn-s3-demo-bucket/test.template
"
]
}
}
}
]
}
拒絕所有 CloudFormation 匯入操作
下列政策授予許可,以完成匯入操作以外的所有 CloudFormation 操作。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAllStackOperations",
"Effect": "Allow",
"Action": "cloudformation:*",
"Resource": "*"
},
{
"Sid": "DenyImport",
"Effect": "Deny",
"Action": "cloudformation:*",
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"cloudformation:ImportResourceTypes": [
"*"
]
}
}
}
]
}
允許特定資源類型的匯入操作
除了僅在指定資源 (在此範例中為 ) 上匯入操作之外,下列政策會授予所有堆疊操作的許可AWS::S3::Bucket
。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowImport",
"Effect": "Allow",
"Action": "cloudformation:*",
"Resource": "*"
"Condition": {
"ForAllValues:StringEqualsIgnoreCase": {
"cloudformation:ImportResourceTypes": [
"AWS::S3::Bucket"
]
}
}
}
]
}
拒絕堆疊範本中的 IAM 資源
下列政策會授予建立堆疊的許可,但如果堆疊的範本包含來自 IAM 服務的任何資源,則會拒絕請求。該政策也需要使用者指定 ResourceTypes
參數,僅供 AWS CLI 和 API 請求使用。此政策使用明確拒絕陳述式,因此,如有其他政策授予額外許可,此政策一律有效 (明確拒絕陳述式一律覆寫明確允許陳述式)。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Effect" : "Allow",
"Action" : [ "cloudformation:CreateStack" ],
"Resource" : "*"
},
{
"Effect" : "Deny",
"Action" : [ "cloudformation:CreateStack" ],
"Resource" : "*",
"Condition" : {
"ForAnyValue:StringLikeIfExists" : {
"cloudformation:ResourceTypes" : [ "AWS::IAM::*" ]
}
}
},
{
"Effect": "Deny",
"Action" : [ "cloudformation:CreateStack" ],
"Resource": "*",
"Condition": {
"Null": {
"cloudformation:ResourceTypes": "true"
}
}
}
]
}
允許使用特定資源類型建立堆疊
下列政策類似於先前的範例。除非堆疊的範本包含來自 IAM 服務的任何資源,否則政策會授予建立堆疊的許可。它還要求使用者指定 參數,該ResourceTypes
參數僅適用於 AWS CLI 和 API 請求。此政策更為簡單,但不使用明確拒絕陳述式。授予額外許可的其他政策,可以覆寫此政策。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Effect" : "Allow",
"Action" : [ "cloudformation:CreateStack" ],
"Resource" : "*",
"Condition" : {
"ForAllValues:StringNotLikeIfExists" : {
"cloudformation:ResourceTypes" : [ "AWS::IAM::*" ]
},
"Null":{
"cloudformation:ResourceTypes": "false"
}
}
}
]
}
根據資源變動 API 動作控制存取權
下列政策授予許可,以依資源變動 API 動作的名稱篩選存取權。這用於控制 IAM 使用者可以使用哪些 APIs 來新增或移除堆疊或堆疊集上的標籤。用於新增或移除標籤的操作應新增為條件索引鍵的值。下列政策會授予變更操作 的 TagResource
和 UntagResource
許可CreateStack
。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "CreateActionConditionPolicyForTagUntagResources",
"Effect": "Allow",
"Action": [
"cloudformation:TagResource",
"cloudformation:UntagResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudformation:CreateAction": [
"CreateStack"
]
}
}
}]
}
根據區域和資源類型限制堆疊集操作
下列政策會授予服務受管堆疊集許可。只有當堆疊集的範本包含 Amazon S3 資源類型 (AWS::S3::*
) 或 AWS::SES::ConfigurationSet
資源類型時,具有此政策的使用者才能在堆疊集上執行操作。如果使用 ID 登入組織管理帳戶123456789012
,使用者也只能對以 ID 為目標的 OU 堆疊集執行操作ou-1fsfsrsdsfrewr
,而且只能對 ID stack-set-id
為 且以 ID AWS 帳戶 為目標的堆疊集執行操作987654321012
。
如果堆疊集範本包含的資源類型不是政策中指定的資源類型,或部署目標不是政策中為對應的管理帳戶和堆疊集所指定的 OU 或帳戶 ID,則堆疊集操作會失敗。
只有在堆疊集操作以 us-east-1
、us-west-2
或 eu-west-2
AWS 區域為目標時,才會套用這些政策限制。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudformation:*"
],
"Resource": [
"arn:aws:cloudformation:*:*:stackset/*",
"arn:aws:cloudformation:*:*:type/resource/AWS-S3
-*",
"arn:aws:cloudformation:us-west-2::type/resource/AWS-SES-ConfigurationSet
",
"arn:aws:cloudformation:*:123456789012
:stackset-target/*/ou-1fsfsrsdsfrewr
",
"arn:aws:cloudformation:*:123456789012
:stackset-target/stack-set-id
/987654321012
"
],
"Condition": {
"ForAllValues:StringEqualsIgnoreCase": {
"cloudformation:TargetRegion": [
"us-east-1
",
"us-west-2
",
"eu-west-1
"
]
}
}
}
]
}
允許所有 IaC 產生器操作
下列政策允許存取與 IaC 產生器資源掃描和範本管理相關的 CloudFormation 動作。第一個陳述式會授予描述、列出和啟動資源掃描的許可。它也允許存取其他必要的許可 (cloudformation:GetResource
、 cloudformation:ListResources
和 cloudformation:ListTypes
),讓 IaC 產生器擷取資源和可用資源類型的相關資訊。第二個陳述式授予建立、刪除、描述、列出和更新產生範本的完整許可。
您也必須將目標 AWS 服務的讀取許可授予使用 IaC 產生器掃描資源的任何人。如需詳細資訊,請參閱掃描資源所需的 IAM 許可。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"ResourceScanningOperations",
"Effect":"Allow",
"Action":[
"cloudformation:DescribeResourceScan",
"cloudformation:GetResource",
"cloudformation:ListResources",
"cloudformation:ListResourceScanRelatedResources",
"cloudformation:ListResourceScanResources",
"cloudformation:ListResourceScans",
"cloudformation:ListTypes",
"cloudformation:StartResourceScan"
],
"Resource":"*"
},
{
"Sid":"TemplateGeneration",
"Effect":"Allow",
"Action":[
"cloudformation:CreateGeneratedTemplate",
"cloudformation:DeleteGeneratedTemplate",
"cloudformation:DescribeGeneratedTemplate",
"cloudformation:GetResource",
"cloudformation:GetGeneratedTemplate",
"cloudformation:ListGeneratedTemplates",
"cloudformation:UpdateGeneratedTemplate"
],
"Resource":"*"
}
]
}