View a markdown version of this page

Mehrere Zugriffstoken in CodeBuild - AWS CodeBuild

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 für Drittanbieter aus Ihren Geheimnissen in AWS Secrets Manager oder über AWS CodeConnections Verbindungen. Du kannst dein Geheimnis oder deine Verbindung als Standard-Zugangsdaten für Interaktionen mit einem bestimmten Drittanbieter wie GitHub GitHub Enterprise oder Bitbucket festlegen.

Du kannst deine Quell-Anmeldeinformationen auf drei verschiedenen Ebenen festlegen:

  1. Anmeldedaten auf Kontoebene für alle Projekte: Dies sind Standardanmeldeinformationen für alle Projekte in einem AWS Konto. Sie werden für ein Projekt verwendet, wenn keine Anmeldedaten auf Projekt- oder Quellenebene angegeben sind.

  2. Zugangsdaten auf Quellenebene für ein bestimmtes Repository: In diesem Fall wird ein Secrets Manager-Schlüssel oder eine Secrets CodeConnections Manager-Verbindung für eine Projektquelle definiert. Diese Anmeldeinformationen werden nur für Operationen im angegebenen Quell-Repository verwendet. Auf diese Weise können Sie mehrere Zugriffstoken mit unterschiedlichen Berechtigungsbereichen im selben Projekt einrichten und müssen nicht die Standardanmeldeinformationen auf Kontoebene verwenden.

  3. Fallback-Anmeldeinformationen auf Projektebene: Sie können Fallback-Anmeldeinformationen auf Projektebene festlegen, indem Sie sie NO_SOURCE als primären Quelltyp verwenden und ein Geheimnis oder eine Verbindung darauf definieren. Verwenden Sie diese Option, wenn Sie mehrere Quellen in einem Projekt haben, für diese jedoch dieselben Anmeldeinformationen verwenden möchten oder wenn Sie nicht die Standardanmeldeinformationen auf Kontoebene für Ihr Projekt verwenden möchten.

Schritt 1: Erstellen Sie ein Secrets Manager-Geheimnis oder eine CodeConnections Verbindung

Gehen Sie wie folgt vor, um ein Secrets Manager-Geheimnis oder eine CodeConnections Verbindung zu erstellen:

Schritt 2: Gewähren Sie der CodeBuild Projekt-IAM-Role Zugriff auf Secrets Manager-Geheimnisse

Anmerkung

Bevor Sie fortfahren, müssen Sie Zugriff auf das in Secrets Manager oder CodeConnections erstellte Token haben.

Um der CodeBuild Projekt-IAM-Rolle Zugriff auf Secrets Manager oder zu gewähren CodeConnections, müssen Sie die folgende IAM-Richtlinie hinzufügen.

Um CodeBuild Projekt-IAM-Rollenzugriff zu gewähren
  1. Erstellen Sie eine IAM-Rolle für Ihr CodeBuild Projekt, indem Sie den Anweisungen Erlauben CodeBuild Sie die Interaktion mit anderen AWS service für Ihr CodeBuild Projekt folgen.

  2. Führen Sie eine der folgenden Aktionen aus:

    • Fügen Sie Ihrer CodeBuild Projektrolle die folgende IAM-Richtlinie hinzu, um Zugriff auf Ihr geheimes Passwort zu gewähren.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:iam::*:role/Service*" ] } ] }

      (Optional) Wenn Sie vom AWS KMS Kunden verwaltete Schlüssel verwenden, um ein Secrets Manager-Geheimnis zu verschlüsseln, können Sie die folgende Richtlinienerklärung hinzufügen, um den Zugriff zu gewähren.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:iam::*:role/Service*", "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "arn:aws:iam::*:role/Service*" } } } ] }
    • Fügen Sie Ihrer CodeBuild Projektrolle die folgende IAM-Richtlinie hinzu, um Zugriff auf Ihre Verbindung zu gewähren.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:GetConnectionToken", "codeconnections:GetConnection" ], "Resource": [ "arn:aws:iam::*:role/Service*" ] } ] }

Schritt 3: Secrets Manager oder CodeConnections Tokens konfigurieren

Sie können Ihre Quell-Anmeldeinformationen entweder mit Secrets Manager oder mit CodeConnections Tokens auf drei verschiedenen Ebenen festlegen.

Konfigurieren Sie Secrets Manager oder CodeConnections Tokens als Anmeldeinformationen auf Kontoebene

Sie können ein Secrets Manager-Geheimnis oder eine Secrets CodeConnections Manager-Verbindung als Anmeldeinformationen auf Kontoebene konfigurieren und in einem Projekt verwenden.

AWS-Managementkonsole
Um eine Verbindung als Anmeldeinformationen auf Kontoebene zu konfigurieren, gehen Sie im AWS-Managementkonsole
  1. Wähle als Quellanbieter Bitbucket oder GitHub Enterprise GitHub aus.

  2. Führe für Credential einen der folgenden Schritte aus:

    • Wählen Sie Standard-Quell-Anmeldeinformationen, um die Standard-Quell-Anmeldeinformationen Ihres Kontos zu verwenden, die für alle Projekte gelten.

      1. Wenn Sie nicht mit Ihrem Quellanbieter verbunden sind, wählen Sie Standard-Quell-Anmeldeinformationen verwalten aus.

      2. Wählen Sie als Anmeldeinformationstyp einen Anmeldeinformationstyp aus.

      3. Wenn Sie möchten CodeConnections, wählen Sie, ob Sie eine vorhandene Verbindung verwenden oder eine neue Verbindung erstellen möchten.

        Wenn Sie einen anderen Anmeldeinformationstyp gewählt haben, wählen Sie für Service aus, welchen Dienst Sie zum Speichern Ihres Tokens verwenden möchten, und gehen Sie wie folgt vor:

        • Wenn Sie Secrets Manager verwenden möchten, können Sie wählen, ob Sie eine bestehende geheime Verbindung verwenden oder ein neues Geheimnis erstellen und Speichern wählen möchten. Weitere Informationen zum Erstellen eines neuen Geheimnisses finden Sie unterErstelle und speichere ein Token in einem Secrets Manager-Geheimnis.

        • Wenn Sie sich für die Verwendung entschieden haben CodeBuild, geben Sie Ihr Token oder Ihren Benutzernamen und das App-Passwort ein und wählen Sie Speichern. Gib für ein Bitbucket-API-Token stattdessen die E-Mail-Adresse und das API-Token für dein Atlassian-Konto ein.

    • Wähle Benutzerdefinierte Quell-Anmeldeinformationen, um benutzerdefinierte Quell-Anmeldeinformationen zu verwenden, um die Standardeinstellungen deines Accounts zu überschreiben.

      1. Wählen Sie als Anmeldeinformationstyp einen Anmeldeinformationstyp aus.

      2. Wählen Sie unter Verbindung aus, ob Sie eine vorhandene Verbindung verwenden oder eine neue Verbindung erstellen möchten.

AWS CLI
Um eine Verbindung als Anmeldeinformationen auf Kontoebene zu konfigurieren, finden Sie im AWS CLI
  • Öffnen Sie die Eingabeaufforderung (Windows) oder das Terminal (Linux, macOS oder Unix). Verwenden Sie den AWS CLI , um den import-source-credentials Befehl auszuführen.

    Verwenden Sie den folgenden Befehl, um ein Secrets Manager-Geheimnis zu konfigurieren:

    aws codebuild import-source-credentials \ --token "<secret-arn>" \ --server-type <source-provider> \ --auth-type SECRETS_MANAGER \ --region <aws-region>

    Verwenden Sie den folgenden Befehl, um eine CodeConnections Verbindung zu konfigurieren:

    aws codebuild import-source-credentials \ --token "<connection-arn>" \ --server-type <source-provider> \ --auth-type CODECONNECTIONS \ --region <aws-region>

    Mit diesem Befehl können Sie ein Token als Standard-Quellanmeldedaten auf Kontoebene importieren. Wenn du Anmeldeinformationen mithilfe der ImportSourceCredentials API importierst, CodeBuild wird das Token für alle Interaktionen mit dem Quellanbieter verwendet, z. B. für Webhooks, Build-Statusberichte und Git-Clone-Operationen, es sei denn, im Projekt wurde ein spezifischerer Satz von Anmeldeinformationen konfiguriert.

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-Geheimnisse oder CodeConnections Verbindungen als Anmeldeinformationen auf Quellenebene zu verwenden, verweisen Sie im CodeBuild Projekt direkt auf das Token und starten Sie einen Build.

AWS-Managementkonsole
Um mehrere Token als Anmeldeinformationen auf Quellenebene zu konfigurieren, finden Sie im AWS-Managementkonsole
  1. Wählen Sie für Quellanbieter die Option GitHub.

  2. Führen Sie für Credential einen der folgenden Schritte aus:

    • Wählen Sie Standard-Quell-Anmeldeinformationen, um die Standard-Quell-Anmeldeinformationen Ihres Kontos zu verwenden, die für alle Projekte gelten.

      1. Wenn Sie nicht verbunden sind GitHub, wählen Sie Standard-Quell-Anmeldeinformationen verwalten aus.

      2. Wählen Sie als Anmeldeinformationstyp App aus GitHub .

      3. Wählen Sie unter Verbindung aus, ob Sie eine vorhandene Verbindung verwenden oder eine neue Verbindung erstellen möchten.

    • Wählen Sie Benutzerdefinierte Quellanmeldeinformationen, um benutzerdefinierte Quellanmeldeinformationen zu verwenden, um die Standardeinstellungen Ihres Kontos zu überschreiben.

      1. Wählen Sie als Anmeldeinformationstyp App aus. GitHub

      2. Wählen Sie unter Verbindung aus, ob Sie eine vorhandene Verbindung verwenden oder eine neue Verbindung erstellen möchten.

  3. Wählen Sie Quelle hinzufügen und wiederholen Sie den Vorgang der Auswahl Ihres Quellanbieters und Ihrer Anmeldeinformationen.

AWS CLI
Um mehrere Token als Anmeldeinformationen auf Quellenebene zu konfigurieren, finden Sie im AWS CLI
  • Öffnen Sie die Eingabeaufforderung (Windows) oder das Terminal (Linux, macOS oder Unix). Verwenden Sie den AWS CLI , um den create-project Befehl auszuführen.

    Verwenden Sie den folgenden Befehl:

    aws codebuild create-project --region <aws-region> \ --name <project-name> \ --artifacts type=NO_ARTIFACTS \ --environment "type=LINUX_CONTAINER, computeType=BUILD_GENERAL1_SMALL, image=aws/codebuild/amazonlinux-x86_64-standard:5.0" \ --service-role <service-role-name> \ --source "type=GITHUB, location=<github-repository-1>, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn-1>}" \ --secondary-sources "type=GITHUB, location=<github-repository-2>, auth={type=SECRETS_MANAGER,resource=<secret-or-connection-arn-2>}, sourceIdentifier=secondary" aws codebuild start-build --region <aws-region> --project-name <project-name>

Legen Sie ein Fallback für Quell-Anmeldeinformationen auf Projektebene fest

Um ein Fallback für Quell-Anmeldeinformationen auf Projektebene einzurichten, verwenden Sie es NO_SOURCE für die primäre Quelle Ihres Projekts 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/amazonlinux-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 Verwendung wird eine Buildspec normalerweise innerhalb des Quellmodells bereitgestelltNO_SOURCE, da es nicht direkt so konfiguriert ist, dass eine externe Quelle zum Abrufen der Buildspec verwendet wird. Spezifikationsreferenz erstellen für CodeBuild 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 Drittanbieter.

Zusätzliche Einrichtungsoptionen

Sie können die Zugangsdaten auf Kontoebene von Secrets Manager mithilfe von CloudFormation Vorlagen konfigurieren. Sie können die folgende 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 gleichen Stapel erstellen, verwenden Sie das CloudFormation Attribut, DependsOn um sicherzustellen, dass es vor dem Projekt erstellt AccountCredential wird.

Sie können Secrets Manager auch mithilfe von CloudFormation Vorlagen für mehrere Anmeldeinformationen auf Quellebene konfigurieren. Sie können die folgende 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/amazonlinux-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