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.
Themen
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 mitCodeDeployHook_
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 Werttrue
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": "*" } ] }