기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
다중 액세스 토큰 입력 CodeBuild
CodeBuild 내부 AWS Secrets Manager 또는 AWS CodeConnections 연결을 통해 보안 정보를 사용하여 타사 공급자에게 액세스 토큰을 소싱할 수 있도록 지원합니다. GitHub Enterprise 또는 Bitbucket과 같은 GitHub 지정된 타사 공급자와의 상호 작용을 위한 기본 자격 증명으로 암호 또는 연결을 설정할 수 있습니다.
소스 자격 증명을 세 가지 수준으로 설정할 수 있습니다.
-
모든 프로젝트의 계정 수준 자격 증명: AWS 계정의 모든 프로젝트에 대한 기본 자격 증명입니다. 프로젝트 또는 소스 수준 자격 증명이 지정되지 않은 경우 프로젝트에 사용됩니다.
-
특정 리포지토리의 소스 수준 자격 증명: Secrets Manager 암호 또는 CodeConnections 연결이 프로젝트 소스에 정의된 경우입니다. 이러한 자격 증명은 지정된 소스 리포지토리의 작업에만 사용됩니다. 이렇게 하면 기본 계정 수준 자격 증명을 사용하지 않고 동일한 프로젝트에서 권한 범위가 다른 여러 액세스 토큰을 설정할 수 있습니다.
-
프로젝트 수준 폴백 자격 증명: 를 기본 소스 유형으로 사용하여
NO_SOURCE
프로젝트 수준 폴백 자격 증명을 설정하고 여기에 암호 또는 연결을 정의할 수 있습니다. 프로젝트에 여러 소스가 있지만 소스에 동일한 자격 증명을 사용하고 싶거나 프로젝트에 기본 계정 수준 자격 증명을 사용하지 않으려는 경우에 사용할 수 있습니다.
주제
1단계: Secrets Manager 시크릿 또는 CodeConnections 연결 생성
다음 지침에 따라 Secrets Manager 시크릿 또는 CodeConnections 연결을 생성하십시오.
2단계: Secrets Manager 비밀에 대한 CodeBuild 프로젝트 IAM 역할 액세스 권한 부여
참고
계속하려면 먼저 Secrets Manager 또는 에서 만든 토큰에 액세스할 수 있어야 CodeConnections 합니다.
Secrets Manager 또는 CodeConnections 에 CodeBuild 프로젝트 IAM 역할 액세스 권한을 부여하려면 다음 IAM 정책을 추가해야 합니다.
CodeBuild 프로젝트 IAM 역할 액세스 권한을 부여하려면
-
프로젝트의 지침에 따라 CodeBuild 프로젝트의 IAM 역할을 다른 AWS 서비스와 상호 작용할 수 CodeBuild 있도록 허용 생성하세요 CodeBuild .
-
다음 중 하나를 수행합니다.
-
CodeBuild 프로젝트 역할에 다음 IAM 정책을 추가하여 시크릿에 대한 액세스 권한을 부여하세요.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "
<secret-arn>
" ] } ] }(선택 사항) AWS KMS 고객 관리 키를 사용하여 Secrets Manager 암호를 암호화하는 경우 다음 정책 설명을 추가하여 액세스 권한을 부여할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "
<kms-key-arn>
", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "<secret-arn>
" } } } ] } -
CodeBuild 프로젝트 역할에 다음 IAM 정책을 추가하여 연결에 대한 액세스 권한을 부여하세요.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [
<connection-arn>
] } ] }
-
3단계: Secrets Manager 또는 CodeConnections 토큰 구성
Secrets Manager 또는 CodeConnections 토큰을 사용하여 소스 자격 증명을 세 가지 수준으로 설정할 수 있습니다.
Secrets Manager 또는 CodeConnections 토큰을 계정 수준 자격 증명으로 구성
Secrets Manager 암호 또는 CodeConnections 연결을 계정 수준 자격 증명으로 구성하고 프로젝트에서 사용할 수 있습니다.
이제 빌드 프로젝트에서 토큰을 사용하고 실행할 수 있습니다. 자세한 내용은 에서 빌드 프로젝트 생성 AWS CodeBuild 및 수동으로 AWS CodeBuild 빌드 실행 단원을 참조하세요.
여러 토큰을 소스 수준 자격 증명으로 구성합니다.
Secrets Manager 암호 또는 CodeConnections 연결을 소스 수준 자격 증명으로 사용하려면 CodeBuild 프로젝트에서 토큰을 직접 참조하고 빌드를 시작하십시오.
프로젝트 수준의 소스 자격 증명 폴백을 설정합니다.
프로젝트 수준 소스 자격 증명 폴백을 설정하려면 프로젝트의 기본 소스로 사용하고 NO_SOURCE
토큰을 참조하세요.
aws codebuild create-project \ --name
<project-name>
\ --service-role<service-role-name>
\ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux2-x86_64-standard:5.0" \ --service-role<service-role-name>
\ --source "type=NO_SOURCE, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn>
}, buildspec=<buildspec>
" --secondary-sources "type=GITHUB, location=<github-repository>
, sourceIdentifier=secondary" aws codebuild start-build --region<aws-region>
--project-name<project_name>
빌드 스펙을 사용할 때 외부 소스를 사용하여 NO_SOURCE 빌드 스펙을 가져오도록 직접 구성되지 않기 때문에 일반적으로 빌드 스펙은 소스 모델 내에 제공됩니다. 일반적으로 NO_SOURCE
소스는 buildspec 내에서 모든 관련 리포지토리를 복제하는 작업을 처리합니다. 구성된 자격 증명을 해당 작업에 사용할 수 있도록 하기 위해 buildspec에서 옵션을 활성화할 수 있습니다. git-credential-helper
env: git-credential-helper: yes
빌드하는 동안 구성된 토큰에서 AuthServer
필드를 읽고 특정 타사 소스 공급자에 대한 모든 git 요청에 토큰 자격 증명을 사용합니다. CodeBuild
추가 설정 옵션
AWS CloudFormation 템플릿을 사용하여 Secrets Manager 계정 수준 자격 증명을 구성할 수 있습니다. 다음 AWS CloudFormation 템플릿을 사용하여 계정 수준 자격 증명을 설정할 수 있습니다.
Parameters: GitHubToken: Type: String NoEcho: true Default: placeholder Resources: CodeBuildAuthTokenSecret: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token Name: codebuild-auth-token SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubToken - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildSecretsManagerAccountCredential: Type: AWS::CodeBuild::SourceCredential Properties: ServerType: GITHUB AuthType: SECRETS_MANAGER Token: !Ref CodeBuildAuthTokenSecret
참고
같은 스택에서 프로젝트를 생성하는 경우에도 AWS CloudFormation 속성을 사용하여 프로젝트보다 먼저 DependsOn생성되도록 하세요. AccountCredential
AWS CloudFormation 템플릿을 사용하여 Secrets Manager의 여러 소스 수준 자격 증명을 구성할 수도 있습니다. 다음 AWS CloudFormation 템플릿을 사용하여 여러 토큰을 사용하여 여러 소스를 가져올 수 있습니다.
Parameters: GitHubTokenOne: Type: String NoEcho: true Default: placeholder GitHubTokenTwo: Type: String NoEcho: true Default: placeholder Resources: CodeBuildSecretsManagerProject: Type: AWS::CodeBuild::Project Properties: Name: codebuild-multitoken-example ServiceRole:
<service-role>
Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/amazonlinux2-x86_64-standard:5.0 Source: Type: GITHUB Location:<github-repository-one>
Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretOne SecondarySources: - Type: GITHUB Location:<github-repository-two>
Auth: Type: SECRETS_MANAGER Resource: !Ref CodeBuildAuthTokenSecretTwo SourceIdentifier: secondary Artifacts: Type: NO_ARTIFACTS LogsConfig: CloudWatchLogs: Status: ENABLED CodeBuildProjectIAMRoleSecretAccess: Type: AWS::IAM::RolePolicy Properties: RoleName:<role-name>
PolicyName: CodeBuildProjectIAMRoleSecretAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: - !Ref CodeBuildAuthTokenSecretOne - !Ref CodeBuildAuthTokenSecretTwo CodeBuildAuthTokenSecretOne: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token one Name: codebuild-auth-token-one SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenOne - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token CodeBuildAuthTokenSecretTwo: Type: AWS::SecretsManager::Secret Properties: Description: CodeBuild auth token two Name: codebuild-auth-token-two SecretString: !Join - '' - - '{"ServerType":"GITHUB","AuthType":"PERSONAL_ACCESS_TOKEN","Token":"' - !Ref GitHubTokenTwo - '"}' Tags: - Key: codebuild:source:provider Value: github - Key: codebuild:source:type Value: personal_access_token