本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
允許 AWS 與其他 服務 CodeBuild 互動
如果您 AWS CodeBuild 第一次遵循 中的步驟開始使用主控台進行存取,則很可能不需要本主題中的資訊。不過,當您繼續使用 時 CodeBuild,您可能想要執行一些動作 CodeBuild ,例如允許 與其他 AWS 服務互動。
若要允許 代表您與相依 AWS 服務 CodeBuild 互動,您需要 AWS CodeBuild 服務角色。您可以使用 CodeBuild 或 AWS CodePipeline 主控台建立 CodeBuild 服務角色。如需相關資訊,請參閱:
如果您不打算使用這些主控台,本節說明如何使用IAM主控台或 建立 CodeBuild服務角色 AWS CLI。
重要
CodeBuild 會針對代表您執行的所有操作使用 服務角色。如果該角色包含使用者不該有的許可,您可能在無意中提升使用者的許可。確定該角色授予最低權限。
本頁所述的服務角色包含政策,授予使用 所需的最低許可 CodeBuild。視您的使用案例而定,您可能需要新增其他許可。
建立 CodeBuild 服務角色 (主控台)
在 開啟IAM主控台https://console.aws.amazon.com/iam/
。 您應該已使用下列其中一項登入主控台:
-
您的 AWS 根帳戶。此為不建議的選項。如需詳細資訊,請參閱 使用者指南 中的AWS 帳戶 根使用者。
-
您 AWS 帳戶中的管理員使用者。如需詳細資訊,請參閱 使用者指南 中的建立您的第一個 AWS 帳戶 根使用者和群組。
-
您 AWS 帳戶中具有執行下列最低動作集之許可的使用者:
iam:AddRoleToInstanceProfile iam:AttachRolePolicy iam:CreateInstanceProfile iam:CreatePolicy iam:CreateRole iam:GetRole iam:ListAttachedRolePolicies iam:ListPolicies iam:ListRoles iam:PassRole iam:PutRolePolicy iam:UpdateAssumeRolePolicy
如需詳細資訊,請參閱 使用者指南 中的IAM政策概觀。
-
-
在導覽窗格中,選擇政策。
-
選擇 建立政策 。
-
在建立政策頁面上,選擇 JSON。
-
針對JSON政策,輸入以下內容,然後選擇檢閱政策:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "ECRPullPolicy", "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }, { "Sid": "ECRAuthPolicy", "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
注意
此政策包含允許存取可能大量 AWS 資源的陳述式。若要限制 AWS CodeBuild 存取特定 AWS 資源,請變更
Resource
陣列的值。如需詳細資訊,請參閱 AWS 服務的安全文件。 -
在 Review Policy (檢閱政策) 頁面上,針對 Policy Name (政策名稱),輸入政策的名稱 (例如,
CodeBuildServiceRolePolicy
),然後選擇 Create policy (建立政策)。注意
如果您使用不同的名稱,請務必在本程序中一律使用該名稱。
-
在導覽窗格中,選擇 Roles (角色)。
-
選擇 Create Role (建立角色)。
-
在建立角色頁面上,在已選取AWS 服務的情況下,選擇 CodeBuild,然後選擇下一步:許可 。
-
在連接許可政策頁面上,選取 CodeBuildServiceRolePolicy,然後選擇下一步:檢閱 。
-
在 Create role and review (建立角色和檢閱) 頁面上,針對 Role name (角色名稱),輸入角色的名稱 (例如
CodeBuildServiceRole
),然後選擇 Create role (建立角色)。
建立 CodeBuild 服務角色 (AWS CLI)
-
請確定您已 AWS CLI 使用對應至其中一個IAM實體的 AWS 存取金鑰和 AWS 秘密存取金鑰來設定 ,如上一個程序所述。如需詳細資訊,請參閱 使用者指南 中的設定 AWS Command Line Interface 。 AWS Command Line Interface
-
在 AWS CLI 安裝 的本機工作站或執行個體上的空目錄中,建立兩個名為
create-role.json
和 的檔案put-role-policy.json
。如果您選擇不同的檔案名稱,請務必在本程序中一律使用這些檔案名稱。create-role.json
:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
注意
建議您使用
aws:SourceAccount
和aws:SourceArn
條件索引鍵,保護自己免受混淆代理人問題的困擾。例如,您可以使用下列條件區塊編輯先前的信任政策。aws:SourceAccount
是 CodeBuild 專案的擁有者,而aws:SourceArn
是 CodeBuild 專案 ARN。如果您想要將服務角色限制為 AWS 帳戶, 看起來
create-role.json
可能會類似:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": [ "
account-ID
" ] } } } ] }如果您想要將您的服務角色限制為特定 CodeBuild 專案, 看起來
create-role.json
可能會類似:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:codebuild:
region-ID
:account-ID
:project/project-name
" } } } ] }注意
如果您不知道或尚未決定 CodeBuild 專案的名稱,並想要在特定ARN模式上設定信任政策限制,則可以ARN使用萬用字元 (*) 取代 的該部分。建立專案後,您可以更新信任政策。
put-role-policy.json
:{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsPolicy", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Sid": "CodeCommitPolicy", "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" }, { "Sid": "S3GetObjectPolicy", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "*" }, { "Sid": "S3PutObjectPolicy", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" }, { "Sid": "S3BucketIdentity", "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": "*" } ] }
注意
此政策包含允許存取可能大量 AWS 資源的陳述式。若要限制 AWS CodeBuild 存取特定 AWS 資源,請變更
Resource
陣列的值。如需詳細資訊,請參閱 AWS 服務的安全文件。 -
切換到您已儲存上述檔案的目錄,然後執行下列兩個命令,按此順序一次執行一個。您可以對
CodeBuildServiceRole
和CodeBuildServiceRolePolicy
使用不同的值,但務必在此處使用這些值。aws iam create-role --role-name CodeBuildServiceRole --assume-role-policy-document file://create-role.json
aws iam put-role-policy --role-name CodeBuildServiceRole --policy-name CodeBuildServiceRolePolicy --policy-document file://put-role-policy.json