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

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

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

IAM 政策陳述式的條件,是您可以用來指定 CodeBuild 基於項目的行動. 您可以建立政策,根據與這些專案相關聯的標籤來允許或拒絕專案中的動作,然後將這些政策套用至您設定來管理 IAM 使用者的 IAM 羣組。如需使用主控台或 AWS CLI 套用標籤至專案的詳細資訊,請參閱 在 AWS CodeBuild 中建立建置專案。如需使用 CodeBuild 開發工具包,請參閲CreateProject標籤中的CodeBuild API 參考。如需使用標籤以控制AWS資源,請參控制 存取AWS使用資源標籤的資源中的IAM User Guide

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

以下範例會在以索引鍵為 Environment 且索引鍵值為 Production 標記的專案上,拒絕所有 BatchGetProjects 動作:除了受管使用者政策之外,使用者的管理員必須將此 IAM 政策連接到未授權的 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:根據資源標籤拒絕或允許報告群組上的動作

您可以建立允許或拒絕對其執行動作的政策 CodeBuild 資源(項目和報表組)基於AWS標籤,然後將這些政策套用至您設定來管理 IAM 使用者的 IAM 羣組。例如,您可以建立一個政策,在 AWS 標籤金鑰為 Status 且金鑰值為 Secret 的任何報告群組中,拒絕所有 CodeBuild 動作,然後將該政策套用至您為一般開發人員 (Developers) 建立的 IAM 群組。然後,您需要確保使用這些標記報告羣組的開發人員不屬於該常規開發人員組,而是屬於不應用限制性策略的其他 IAM 組(SecretDevelopers

以下示例拒絕所有 CodeBuild 對使用鍵標記的報表組的操作Status和鍵值Secret

{ "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:限制 CodeBuild 動作 AWSCodeBuildDeveloperAccess 根據資源標籤

您可以創建允許 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" } } } ] }