Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Mehrere Zugriffstoken in CodeBuild
CodeBuild unterstützt die Beschaffung von Zugriffstoken an Drittanbieter aus Ihren Geheimnissen in AWS Secrets Manager oder über AWS CodeConnections Verbindungen. Du kannst dein Geheimnis oder deine Verbindung als Standardanmeldedaten für Interaktionen mit einem bestimmten Drittanbieter wie GitHub GitHub Enterprise oder Bitbucket festlegen.
Du kannst deine Quellanmeldedaten auf drei verschiedenen Ebenen festlegen:
-
Anmeldeinformationen auf Kontoebene für alle Projekte: Dies sind Standardanmeldedaten für alle Projekte in einem AWS Konto. Sie werden für ein Projekt verwendet, wenn keine Anmeldeinformationen auf Projekt- oder Quellenebene angegeben sind.
-
Anmeldeinformationen auf Quellenebene für ein bestimmtes Repository: In diesem Fall wird ein Secrets Manager-Geheimnis oder eine Secrets CodeConnections Manager-Verbindung für eine Projektquelle definiert. Diese Anmeldeinformationen werden nur für Operationen mit dem angegebenen Quell-Repository verwendet. Auf diese Weise können Sie mehrere Zugriffstoken mit unterschiedlichen Berechtigungsbereichen im selben Projekt einrichten und müssen nicht die Standardanmeldedaten auf Kontoebene verwenden.
-
Ausweichdaten auf Projektebene: Sie können Fallback-Anmeldeinformationen auf Projektebene einrichten, indem Sie sie
NO_SOURCE
als primären Quelltyp verwenden und für diesen ein Geheimnis oder eine Verbindung definieren. Dies kann verwendet werden, wenn Sie mehrere Quellen in einem Projekt haben, aber dieselben Anmeldeinformationen für diese verwenden möchten, oder wenn Sie nicht die Standardanmeldedaten auf Kontoebene für Ihr Projekt verwenden möchten.
Themen
- Schritt 1: Erstellen Sie ein Secrets Manager Manager-Geheimnis oder eine CodeConnections Verbindung
- Schritt 2: Gewähren Sie der CodeBuild IAM Projektrolle Zugriff auf Secrets Manager Manager-Geheimnisse
- Schritt 3: Secrets Manager oder CodeConnections Tokens konfigurieren
- Zusätzliche Einrichtungsoptionen
Schritt 1: Erstellen Sie ein Secrets Manager Manager-Geheimnis oder eine CodeConnections Verbindung
Gehen Sie wie folgt vor, um ein Secrets Manager Manager-Geheimnis oder eine CodeConnections Verbindung zu erstellen:
Schritt 2: Gewähren Sie der CodeBuild IAM Projektrolle Zugriff auf Secrets Manager Manager-Geheimnisse
Anmerkung
Bevor Sie fortfahren, müssen Sie Zugriff auf das in Secrets Manager oder erstellte Token haben CodeConnections.
Um Secrets Manager oder Zugriff auf CodeBuild IAM Projektrollen zu gewähren CodeConnections, müssen Sie die folgende IAM Richtlinie hinzufügen.
Um Zugriff auf CodeBuild IAM Projektrollen zu gewähren
-
Erstellen Sie eine IAM Rolle für Ihr CodeBuild Projekt, indem Sie den Anweisungen Erlaube CodeBuild die Interaktion mit anderen AWS Diensten für Ihr CodeBuild Projekt folgen.
-
Führen Sie eine der folgenden Aktionen aus:
-
Fügen Sie Ihrer CodeBuild Projektrolle die folgende IAM Richtlinie hinzu, um Zugriff auf Ihr Geheimnis zu gewähren.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "
<secret-arn>
" ] } ] }(Optional) Wenn Sie vom AWS KMS Kunden verwaltete Schlüssel verwenden, um ein Secrets Manager Manager-Geheimnis zu verschlüsseln, können Sie die folgende Richtlinienerklärung hinzufügen, um Zugriff zu gewähren.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "
<kms-key-arn>
", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "<secret-arn>
" } } } ] } -
Fügen Sie Ihrer CodeBuild Projektrolle die folgende IAM Richtlinie hinzu, um Zugriff auf Ihre Verbindung zu gewähren.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [
<connection-arn>
] } ] }
-
Schritt 3: Secrets Manager oder CodeConnections Tokens konfigurieren
Sie können Ihre Quellanmeldedaten entweder mit Secrets Manager oder CodeConnections Tokens auf drei verschiedenen Ebenen festlegen.
Secrets Manager oder CodeConnections Tokens als Anmeldeinformationen auf Kontoebene konfigurieren
Sie können ein Secrets Manager Manager-Geheimnis oder eine Secrets CodeConnections Manager-Verbindung als Anmeldeinformationen auf Kontoebene konfigurieren und in einem Projekt verwenden.
Sie können das Token jetzt in Ihrem Build-Projekt verwenden und ausführen. Weitere Informationen erhalten Sie unter Erstellen Sie ein Build-Projekt in AWS CodeBuild und Manuelles Ausführen von AWS CodeBuild Builds.
Konfigurieren Sie mehrere Token als Anmeldeinformationen auf Quellenebene
Um Secrets Manager Manager-Geheimnisse oder CodeConnections Verbindungen als Anmeldeinformationen auf Quellenebene zu verwenden, verweisen Sie direkt auf das Token im CodeBuild Projekt und starten Sie einen Build.
Richten Sie einen Fallback für Quellanmeldedaten auf Projektebene ein
Um ein Fallback für Quellanmeldedaten auf Projektebene einzurichten, verwenden Sie NO_SOURCE
für Ihr Projekt die primäre Quelle und verweisen Sie auf das Token.
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>
Bei der Verwendung NO_SOURCE wird eine Buildspec normalerweise innerhalb des Quellmodells bereitgestellt, da es nicht direkt für die Verwendung einer externen Quelle zum Abrufen der Buildspec konfiguriert ist. In der Regel übernimmt eine NO_SOURCE
Quelle das Klonen aller relevanten Repositorys innerhalb der Buildspec. Um sicherzustellen, dass die konfigurierten Anmeldeinformationen für diese Operationen verfügbar sind, können Sie die Option in der git-credential-helper
Buildspec aktivieren.
env: git-credential-helper: yes
Während des Builds liest CodeBuild dann das AuthServer
Feld aus dem konfigurierten Token und verwendet die Token-Anmeldeinformationen für alle Git-Anfragen an diesen bestimmten externen Quellanbieter.
Zusätzliche Einrichtungsoptionen
Sie können Secrets Manager Manager-Anmeldeinformationen auf Kontoebene mithilfe von AWS CloudFormation Vorlagen konfigurieren. Sie können die folgende AWS CloudFormation Vorlage verwenden, um Anmeldeinformationen auf Kontoebene festzulegen:
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
Anmerkung
Wenn Sie auch ein Projekt im selben Stapel erstellen, verwenden Sie das AWS CloudFormation Attribut, DependsOnum sicherzustellen, dass das vor dem Projekt erstellt AccountCredential
wird.
Sie können Secrets Manager auch mithilfe von AWS CloudFormation Vorlagen für mehrere Anmeldeinformationen auf Quellenebene konfigurieren. Sie können die folgende AWS CloudFormation Vorlage verwenden, um mehrere Token zum Abrufen mehrerer Quellen zu verwenden:
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