AWS CodeDeploy
Benutzerhandbuch (API-Version 2014-10-06)

Verwenden von identitätsbasierten Richtlinien (IAM-Richtlinien) für CodeDeploy

Dieses Thema enthält Beispiele zu identitätsbasierten Richtlinien, die verdeutlichen, wie ein Kontoadministrator IAM-Identitäten (d. h. Benutzern, Gruppen und Rollen) Berechtigungsrichtlinien zuweisen und somit Berechtigungen zur Durchführung von Operationen für CodeDeploy-Ressourcen erteilen kann. Informationen zu der Richtlinie, die einem IAM-Benutzer angefügt werden muss, damit CodeDeploy verwendet werden kann, finden Sie unter Schritt 1: Bereitstellen einer IAM-Rolle.

Wichtig

Wir empfehlen Ihnen, zunächst die einführenden Themen zu lesen, in denen die Grundkonzepte und verfügbaren Optionen zum Verwalten des Zugriffs auf Ihre CodeDeploy-Ressourcen erläutert werden. Weitere Informationen finden Sie unter Übersicht über die Verwaltung von Zugriffsberechtigungen für Ihre CodeDeploy-Ressourcen.

Die folgende Abbildung zeigt ein Beispiel für eine Berechtigungsrichtlinie, mit der ein Benutzer die Bereitstellungsgruppe mit dem Namen WordPress_DepGroup löschen kann, die der Anwendung WordPress_App in der Region us-west-2 zugeordnet ist.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:DeleteDeploymentGroup" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:WordPress_App/WordPress_DepGroup" ] } ] }

Erforderliche Berechtigungen für die Verwendung der CodeDeploy-Konsole

Damit Benutzer mit der CodeDeploy-Konsole arbeiten können, müssen diese über eine Mindestmenge an Berechtigungen verfügen, die den Benutzern erlauben, andere AWS-Ressourcen für ihr AWS-Konto zu beschreiben. Um CodeDeploy in der CodeDeploy-Konsole voll zu verwenden, benötigen Sie Berechtigungen der folgenden Services:

  • Amazon EC2 Auto Scaling

  • AWS CodeDeploy

  • Amazon Elastic Compute Cloud

  • Elastic Load Balancing

  • AWS Identity and Access Management

  • Amazon Simple Storage Service

  • Amazon Simple Notification Service

  • Amazon CloudWatch

Wenn Sie eine IAM-Richtlinie erstellen, die strenger ist als die mindestens erforderlichen Berechtigungen, funktioniert die Konsole nicht wie vorgesehen für Benutzer mit dieser IAM-Richtlinie. Um sicherzustellen, dass diese Benutzer die CodeDeploy-Konsole weiterhin verwenden können, fügen Sie dem Benutzer auch die verwaltete Richtlinie AWSCodeDeployReadOnlyAccess an. Einzelheiten dazu finden Sie unter Von AWS verwaltete (vordefinierte) Richtlinien für CodeDeploy.

Für Benutzer, die nur Aufrufe an die AWS CLI oder CodeDeploy-API durchführen, müssen Sie keine Mindestberechtigungen in der Konsole erteilen.

Von AWS verwaltete (vordefinierte) Richtlinien für CodeDeploy

Durch die Bereitstellung von eigenständigen IAM-Richtlinien, die von AWS erstellt und administriert werden, deckt AWS viele häufige Anwendungsfälle ab. Diese von AWS verwalteten Richtlinien erteilen die erforderlichen Berechtigungen für viele häufige Anwendungsfälle, sodass Sie nicht mühsam ermitteln müssen, welche Berechtigungen erforderlich sind. Weitere Informationen finden Sie unter AWS-verwaltete Richtlinien im IAM-Benutzerhandbuch.

Die folgenden AWS-verwalteten Richtlinien, die Sie Benutzern in Ihrem Konto anfügen können, gelten speziell für CodeDeploy:

  • AWSCodeDeployFullAccess – Gewährt Vollzugriff auf CodeDeploy.

    Anmerkung

    AWSCodeDeployFullAccess stellt keine Berechtigungen für Operationen in anderen Services bereit, die zum Bereitstellen Ihrer Anwendungen erforderlich sind, z. B. Amazon EC2 und Amazon S3, nur für spezielle CodeDeploy-Operationen.

  • AWSCodeDeployDeployerAccess– Gewährt Zugriff auf einen IAM-Benutzer zum Registrieren und Bereitstellen von Revisionen.

     

  • AWSCodeDeployReadOnlyAccess – Gewährt schreibgeschützten Zugriff auf CodeDeploy.

     

  • AWSCodeDeployRole – Ermöglicht CodeDeploy Amazon EC2-Tags anhand seiner Amazon EC2-Instances oder Amazon EC2 Auto Scaling-Gruppennamen und lokale Instances anhand ihrer lokalen Instance-Tags zu identifizieren und Anwendungsrevisionen entsprechend bereitzustellen. Stellt Berechtigungen bereit, die zum Veröffentlichen einer Benachrichtigung für ein Amazon SNS-Thema und zum Abrufen von Informationen zu Alarmen von CloudWatch erforderlich sind.

     

  • AWSCodeDeployRoleForLambda: erteilt CodeDeploy die Berechtigung für den Zugriff auf AWS Lambda und alle anderen benötigten Ressourcen für eine Bereitstellung.

     

  • AWSCodeDeployRoleForECS: erteilt CodeDeploy die Berechtigung für den Zugriff auf Amazon ECS und alle anderen benötigten Ressourcen für eine Bereitstellung.

     

  • AWSCodeDeployRoleForECSLimited: erteilt CodeDeploy mit den folgenden Ausnahmen die Berechtigung für den Zugriff auf Amazon ECS und alle anderen benötigten Ressourcen für eine Bereitstellung:

    • Im Abschnitt hooks der AppSpec file können nur Lambda Funktionen verwendet werden, deren Namen mit CodeDeployHook_ beginnen. Weitere Informationen finden Sie unter AppSpec „hooks“-Abschnitt für eine Amazon ECS-Bereitstellung.

    • Amazon S3-Bucket-Zugriff ist beschränkt auf S3-Buckets mit einem Registrierungs-Tag, UseWithCodeDeploy, für das der Wert true festgelegt ist. Weitere Informationen finden Sie unter Markieren von Objekten.

Berechtigungen für einige Aspekte des Bereitstellungsprozesses werden zwei anderen Rollentyp gewährt, die im Auftrag von CodeDeploy agieren, und nicht IAM-Benutzern.

  • IAM-Instance-Profil: eine IAM-Rolle, die Sie den Amazon EC2-Instances anfügen. Dieses Profil enthält die Berechtigungen, die für den Zugriff auf die Amazon S3-Buckets oder GitHub-Repositorys erforderlich sind, in denen die Anwendungen gespeichert sind. Weitere Informationen finden Sie unter Schritt 4: Erstellen eines IAM-Instance-Profils für Ihre Amazon EC2-Instances.

  • Servicerolle: eine IAM-Rolle, die einem AWS-Service Berechtigungen gewährt, damit dieser auf AWS-Ressourcen zugreifen kann. Die Richtlinien, die Sie der Servicerolle anfügen, bestimmen, auf welche AWS-Ressourcen der Service zugreifen und welche Aktionen er mit diesen Ressourcen ausführen kann. Bei CodeDeploy wird eine Servicerolle für Folgendes verwendet:

    • Entweder, um die Tags zu lesen, die den Instances zugeordnet wurden, oder um die mit den Instances verbundenen Amazon EC2 Auto Scaling-Gruppennamen zu lesen. Dies ermöglicht CodeDeploy, die Instances zu identifizieren, in denen die Anwendungen bereitgestellt werden können.

    • Um auf Instances, in Amazon EC2 Auto Scaling-Gruppen und Elastic Load Balancing-Load Balancers Vorgänge durchzuführen.

    • Um Informationen in Amazon SNS-Themen zu veröffentlichen, damit Benachrichtigungen gesendet werden können, wenn eine bestimmte Bereitstellung erfolgt oder Instance-Ereignisse auftreten.

    • Zum Abrufen von Informationen über CloudWatch-Alarme, um eine Alarmüberwachung für Bereitstellungen einzurichten.

    Weitere Informationen finden Sie unter Schritt 3: Erstellen einer Servicerolle für CodeDeploy.

Sie können auch Ihre eigenen, benutzerdefinierten IAM-Richtlinien erstellen, um Berechtigungen für CodeDeploy-Aktionen und -Ressourcen zu gewähren. Die benutzerdefinierten Richtlinien können Sie dann den IAM-Benutzern oder -Gruppen zuweisen, die diese Berechtigungen benötigen.

CodeDeploy-verwaltete Richtlinien und Benachrichtigungen

CodeDeploy unterstützt Benachrichtigungen, die Benutzer über wichtige Änderungen an deployments informieren können. -verwaltete Richtlinien für CodeDeploy beinhalten Richtlinienanweisungen für Benachrichtigungsfunktionalität. Weitere Informationen finden Sie unter Was sind Benachrichtigungen?

Berechtigungen in Zusammenhang mit Benachrichtigungen in verwalteten Vollzugriffsrichtlinien

Die AWSCodeDeployFullAccess-verwaltete Richtlinie enthält die folgenden Anweisungen, um vollen Zugriff auf Benachrichtigungen zu ermöglichen. Benutzer, für die eine dieser verwalteten Richtlinien angewendet wird, können auch Amazon SNS-Themen für Benachrichtigungen erstellen und verwalten, Benutzer für Themen abonnieren und Abonnements beenden sowie Themen auflisten, die als Ziele für Benachrichtigungsregeln ausgewählt werden sollen.

{ "Sid": "CodeStarNotificationsReadWriteAccess", "Effect": "Allow", "Action": [ "codestar-notifications:CreateNotificationRule", "codestar-notifications:DescribeNotificationRule", "codestar-notifications:UpdateNotificationRule", "codestar-notifications:DeleteNotificationRule", "codestar-notifications:Subscribe", "codestar-notifications:Unsubscribe" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules", "codestar-notifications:ListTargets", "codestar-notifications:ListTagsforResource" ], "Resource": "*" }, { "Sid": "CodeStarNotificationsSNSTopicCreateAccess", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:codestar-notifications*" }, { "Sid": "SNSTopicListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" }

Berechtigungen in Zusammenhang mit Benachrichtigungen in schreibgeschützten verwalteten Richtlinien

Die AWSCodeDeployReadOnlyAccess-verwaltete Richtlinie enthält die folgenden Anweisungen, um schreibgeschützten Zugriff auf Benachrichtigungen zu ermöglichen. Benutzer mit dieser verwalteten Richtlinie können Benachrichtigungen für Ressourcen anzeigen, sie können sie jedoch nicht erstellen, verwalten oder abonnieren.

{ "Sid": "CodeStarNotificationsPowerUserAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition" : { "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*"} } }, { "Sid": "CodeStarNotificationsListAccess", "Effect": "Allow", "Action": [ "codestar-notifications:ListNotificationRules" ], "Resource": "*" }

Weitere Informationen zu IAM und Benachrichtigungen finden Sie unter Identity and Access Management für AWS CodeStar Notifications.

Beispiele für vom Kunden verwaltete Richtlinien

In diesem Abschnitt finden Sie Beispiele für Benutzerrichtlinien, die Berechtigungen für verschiedene CodeDeploy-Aktionen gewähren. Diese Richtlinien sind nur wirksam, wenn Sie die CodeDeploy-API, AWS-SDKs oder die AWS CLI verwenden. Bei Verwendung der Konsole müssen Sie zusätzliche konsolenspezifische Berechtigungen erteilen, die im Abschnitt Erforderliche Berechtigungen für die Verwendung der CodeDeploy-Konsole erläutert werden.

Sie können die folgenden IAM-Beispielrichtlinien zur Beschränkung des Zugriffs auf CodeDeploy für die IAM-Benutzer und -Rollen verwenden.

Anmerkung

In allen Beispielen werden die Region USA West (Oregon) (us-west-2) und fiktive Konto-IDs verwendet.

Beispiele

Beispiel 1: Lassen Sie zu, dass ein Benutzer CodeDeploy-Operationen in einer einzelnen Region ausführt

Das folgende Beispiel erteilt Berechtigungen zum Durchführen von CodeDeploy-Operationen nur in der Region us-west-2:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:*" ] } ] }

Beispiel 2: Lassen Sie zu, dass ein Benutzer Revisionen für eine einzelne Anwendung registriert

Das folgende Beispiel erteilt Berechtigungen zum Registrieren von Anwendungsrevisionen für alle Anwendungen, die mit Test in der Region us-west-2 beginnen:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:RegisterApplicationRevision" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:application:Test*" ] } ] }

Beispiel 3: Lassen Sie zu, dass ein Benutzer Bereitstellungen für eine einzelne Bereitstellungsgruppe erstellt

Im folgenden Beispiel kann der angegebene Benutzer Bereitstellungsgruppen für die Bereitstellungsgruppe mit dem Namen WordPress_DepGroup erstellen, die mit der Anwendung namens WordPress_App, der benutzerdefinierten Bereitstellungskonfiguration mit dem Namen ThreeQuartersHealthy und mit Anwendungsrevisionen für die Anwendung namens WordPress_App im Zusammenhang steht. All diese Ressourcen stehen im Zusammenhang mit der Region us-west-2.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:CreateDeployment" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentgroup:WordPress_App/WordPress_DepGroup" ] }, { "Effect" : "Allow", "Action" : [ "codedeploy:GetDeploymentConfig" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:deploymentconfig:ThreeQuartersHealthy" ] }, { "Effect" : "Allow", "Action" : [ "codedeploy:GetApplicationRevision" ], "Resource" : [ "arn:aws:codedeploy:us-west-2:80398EXAMPLE:application:WordPress_App" ] } ] }

Beispiel 4: Berechtigen eines Benutzers zum Erstellen von Bereitstellungen mithilfe einer Auto Scaling-Gruppe, die durch eine Startvorlage erstellt wurde

Das folgende Beispiel erteilt Berechtigungen zum Erstellen von Amazon EC2-Bereitstellungen mithilfe einer Auto Scaling-Gruppe, die durch eine Startvorlage erstellt wurde. Diese Berechtigungen sind zusätzlich zu den Berechtigungen in der AWSCodeDeployRole erforderlich. Weitere Informationen finden Sie unter Erstellen Sie eine Servicerolle, Tutorial: Bereitstellen einer Anwendung für eine Amazon EC2 Auto Scaling-Gruppe mithilfe von CodeDeploy und Erstellen einer Startvorlage für eine Auto Scaling-Gruppe.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "ec2:RunInstance", "ec2:CreateTags" ], "Resource": "*" } ] }