使用標籤來控制對 AWS CodeBuild 資源的存取 - AWS CodeBuild

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用標籤來控制對 AWS CodeBuild 資源的存取

IAM 政策陳述式中的條件,屬於您可以用來指定以CodeBuild專案為基礎的動作指定許可的語法。您可以建立政策,根據與這些專案相關聯的標記允許或拒絕專案執行動作,然後將這些政策套用到為管理使用者設定的 IAM 群組。如需使用主控台或 AWS CLI 套用標籤至專案的詳細資訊,請參閱 在 AWS CodeBuild 中建立建置專案。如需使用CodeBuild SDK 套用標籤的詳細資訊,請參閱 CodeBuildAPI 參考資料中的CreateProject標籤。如需使用標籤以控制對AWS資源之存取的資訊,請參閱《IAM 使用者指南》中的使用資源標籤控制對資源的存取。AWS

範例 1:根據資源標籤限制 CodeBuild 專案動作

以下範例會在以索引鍵為 Environment 且索引鍵值為 Production 標記的專案上,拒絕所有 BatchGetProjects 動作:除了受管使用者政策之外,使用者的管理員必須將此 IAM 政策連接到未授權的使用者。aws:ResourceTag 條件索引鍵用於依據其標籤來控制資源的存取。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:BatchGetProjects" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/Environment": "Production" } } } ] }
範例 2:根據請求標籤限制 CodeBuild 專案動作

如果請求包含索引鍵為 Environment 且索引鍵值為 Production 的標籤,則下列政策會拒絕使用者對 CreateProject 動作的許可。此外,如果請求包含索引鍵為 Environment 的標籤,則政策會使用 aws:TagKeys 條件索引鍵來不允許 UpdateProject,防止未授權的使用者修改專案。除了受管使用者政策之外,管理員必須將此 IAM 政策連接到未授權執行上述動作的使用者。aws:RequestTag條件金鑰可用於控制您可以在 IAM 請求條件中傳遞哪些標籤

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codebuild:CreateProject" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:RequestTag/Environment": "Production" } } }, { "Effect": "Deny", "Action": [ "codebuild:UpdateProject" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Environment"] } } } ] }
範例 3:根據資源標籤拒絕或允許報告群組上的動作

您可以根據與這些資源關聯的AWS標記建立政策,允許或拒絕對CodeBuild資源 (專案和報表群組) 執行動作,然後將這些政策套用至為管理使用者設定的 IAM 群組。例如,您可以建立一個政策,在 AWS 標籤金鑰為 Status 且金鑰值為 Secret 的任何報告群組中,拒絕所有 CodeBuild 動作,然後將該政策套用至您為一般開發人員 (Developers) 建立的 IAM 群組。然後,您必須確定處理這些標記報表群組的開發人員不是該一般開發人員群組的成員,而是屬於未套用限制性政策的其他 IAM 群組 (SecretDevelopers)。

以下範例會在標記金鑰為 Status 且金鑰值為 Secret 的報告群組上,拒絕所有 CodeBuild 動作:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Deny", "Action" : [ "codebuild:BatchGetReportGroups," "codebuild:CreateReportGroup", "codebuild:DeleteReportGroup", "codebuild:ListReportGroups", "codebuild:ListReportsForReportGroup", "codebuild:UpdateReportGroup" ] "Resource" : "*", "Condition" : { "StringEquals" : "aws:ResourceTag/Status": "Secret" } } ] }
範例 4:AWSCodeBuildDeveloperAccess根據 Resource 標籤限制CodeBuild動作

您可以建立政策,允許在未以特定標籤標記的所有報告群組和專案上執行 CodeBuild 動作。例如,以下政策允許對所有報告群組和專案擁有同等的 AWSCodeBuildDeveloperAccess 許可,但以特定標籤標記的專案除外:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codebuild:StartBuild", "codebuild:StopBuild", "codebuild:BatchGet*", "codebuild:GetResourcePolicy", "codebuild:DescribeTestCases", "codebuild:List*", "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "cloudwatch:GetMetricStatistics", "events:DescribeRule", "events:ListTargetsByRule", "events:ListRuleNamesByTarget", "logs:GetLogEvents", "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } } ] }