CodeBuild Erstellung von Bereitstellungsrollen - AWS Proton

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.

CodeBuild Erstellung von Bereitstellungsrollen

IaaC-Tools (Infrastructure as a Code) wie Terraform AWS CloudFormation und Terraform benötigen Berechtigungen für die vielen verschiedenen Arten von Ressourcen. AWS Wenn eine IaaC-Vorlage beispielsweise einen Amazon S3 S3-Bucket deklariert, benötigt sie Berechtigungen zum Erstellen, Lesen, Aktualisieren und Löschen von Amazon S3 S3-Buckets. Es wird als bewährte Sicherheitsmethode angesehen, Rollen auf die minimal erforderlichen Berechtigungen zu beschränken. Angesichts der Vielzahl der AWS Ressourcen ist es schwierig, Richtlinien mit den geringsten Rechten für IaaC-Vorlagen zu erstellen, insbesondere wenn sich die Ressourcen, die von diesen Vorlagen verwaltet werden, später ändern können. Beispielsweise fügen Sie bei Ihren letzten Änderungen an einer Vorlage, von der verwaltet wird AWS Proton, eine Datenbankressource hinzu. RDS

Die Konfiguration der richtigen Berechtigungen trägt zu einer reibungslosen Bereitstellung Ihres IaC bei. AWS Proton CodeBuild Beim Provisioning werden beliebige vom Kunden bereitgestellte CLI Befehle in einem CodeBuild Projekt ausgeführt, das sich im Konto des Kunden befindet. In der Regel erstellen und löschen diese Befehle die Infrastruktur mithilfe eines IaaC-Tools (Infrastructure as Code) wie. AWS CDK Wenn eine AWS Ressource bereitgestellt wird, deren Vorlage CodeBuild Provisioning verwendet, AWS wird ein Build in einem CodeBuild Projekt gestartet, das von verwaltet wird. AWS Es wird eine Rolle an übergeben CodeBuild, die davon CodeBuild ausgeht, Befehle auszuführen. Diese Rolle, die sogenannte CodeBuild Bereitstellungsrolle, wird vom Kunden bereitgestellt und enthält die für die Bereitstellung der Infrastruktur erforderlichen Berechtigungen. Sie darf nur von ihnen übernommen werden CodeBuild und AWS Proton kann sie auch nicht annehmen.

Erstellen der -Rolle

Die CodeBuild Provisioning-Rolle kann in der IAM Konsole oder in der AWS CLI erstellt werden. Um sie zu erstellen in: AWS CLI

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

Damit wird auch der angehängtAWSProtonCodeBuildProvisioningBasicAccess, der die Mindestberechtigungen enthält, die der CodeBuild Dienst zum Ausführen eines Builds benötigt.

Wenn Sie lieber die Konsole verwenden möchten, stellen Sie bei der Erstellung der Rolle bitte Folgendes sicher:

  1. Wählen Sie für vertrauenswürdige Entität AWS Dienst und dann aus CodeBuild.

  2. Wählen Sie im Schritt Berechtigungen hinzufügen alle anderen Richtlinien ausAWSProtonCodeBuildProvisioningBasicAccess, die Sie anhängen möchten.

Administratorzugriff

Wenn Sie die AdministratorAccess Richtlinie an die CodeBuild Bereitstellungsrolle anhängen, wird garantiert, dass keine IaaC-Vorlage aufgrund fehlender Berechtigungen fehlschlägt. Das bedeutet auch, dass jeder, der eine Umgebungs- oder Dienstvorlage erstellen kann, Aktionen auf Administratorebene ausführen kann, auch wenn dieser Benutzer kein Administrator ist. AWS Proton empfiehlt die Verwendung AdministatorAccess zusammen mit der Provisioning-Rolle nicht. CodeBuild Wenn Sie sich für die Verwendung AdministratorAccess mit der CodeBuild Provisioning-Rolle entscheiden, tun Sie dies in einer Sandbox-Umgebung.

Sie können eine Rolle AdministratorAccess in der IAM Konsole oder mit dem folgenden Befehl erstellen:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Eine Rolle mit minimalem Umfang erstellen

Wenn Sie eine Rolle mit Mindestberechtigungen erstellen möchten, gibt es mehrere Möglichkeiten:

  • Stellen Sie die Lösung mit Administratorberechtigungen bereit und beschränken Sie dann den Umfang der Rolle. Wir empfehlen die Verwendung von IAMAccess Analyzer.

  • Verwenden Sie verwaltete Richtlinien, um Zugriff auf die Dienste zu gewähren, die Sie nutzen möchten.

AWS CDK

Wenn Sie AWS CDK mit AWS Proton verwenden und in jedem Umgebungskonto/jeder Region cdk bootstrap ausgeführt haben, gibt es bereits eine Rolle für. cdk deploy Fügen Sie in diesem Fall der CodeBuild Provisioning-Rolle die folgende Richtlinie hinzu:

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
Benutzerdefiniert VPC

Wenn Sie sich für eine benutzerdefinierte Ausführung CodeBuild entscheidenVPC, benötigen Sie in Ihrer CodeBuild Rolle die folgenden Berechtigungen:

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

Sie könnten auch die AmazonEC2FullAccess verwaltete Richtlinie verwenden, obwohl diese auch Berechtigungen beinhaltet, die Sie möglicherweise nicht benötigen. Um die verwaltete Richtlinie anzuhängen, verwenden SieCLI:

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess