Wie übernehme ich mit der AWS-CLI eine IAM-Rolle?
Ich möchte mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) eine Rolle im AWS Identity and Access Management (IAM) übernehmen.
Behebung
**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.
Gehen Sie wie folgt vor, um mithilfe der AWS CLI eine IAM-Rolle mit schreibgeschütztem Zugriff auf Amazon Elastic Compute Cloud (Amazon EC2)-Instances zu übernehmen.
Wichtig: Ihre Anmeldeinformationen, z. B. Passwörter, sind im Klartext sichtbar, wenn Sie die Befehle in den folgenden Schritten ausführen. Nachdem Sie die IAM-Rolle übernommen haben, empfiehlt es sich, Ihre Passwörter zu ändern.
Erstellen Sie einen IAM-Benutzer mit der Berechtigung, Rollen zu übernehmen
- Erstellen Sie einen IAM-Benutzer über die AWS-CLI mit dem folgenden Befehl:
**Hinweis:**Ersetzen Sie Bob durch Ihren IAM-Benutzernamen. - Erstellen Sie die IAM-Richtlinie, die dem Benutzer Bob die Berechtigungen gewährt. Verwenden Sie dazu einen Texteditor Ihrer Wahl, um die JSON-Datei zu erstellen, die die IAM-Richtlinie definiert. Sie können das folgende JSON-Beispiel, example-policy.json, als Vorlage verwenden:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Describe*", "iam:ListRoles", "sts:AssumeRole" ], "Resource": "*" } ] }
Weitere Informationen zum Erstellen von IAM-Richtlinien finden Sie unter Erstellen von IAM-Richtlinien, Beispiel für identitätsbasierte IAM-Richtlinien und IAM-JSON-Richtlinienreferenz.
Erstellen Sie die IAM-Richtlinie
Gehen Sie wie folgt vor, um Ihre IAM-Richtlinie zu erstellen:
- Führen Sie den folgenden Befehl aws iam create-policy aus:
Der Befehl aws iam create-policy gibt mehrere Informationen aus, darunter den ARN (Amazon Resource Name) der IAM-Richtlinie wie folgt:aws iam create-policy --policy-name example-policy --policy-document file://example-policy.json
**Hinweis:**Ersetzen Sie 123456789012 durch Ihre eigene Konto-ID.arn:aws:iam::123456789012:policy/example-policy
- Notieren Sie sich den IAM-Richtlinien-ARN aus der Ausgabe und hängen Sie die Richtlinie mit dem Befehl attach-user-policy an Bob an. Stellen Sie dann mit dem Befehl list-attached-user-policies wie folgt sicher, dass der Anhang vorhanden ist:
aws iam attach-user-policy --user-name Bob --policy-arn "arn:aws:iam::123456789012:policy/example-policy" aws iam list-attached-user-policies --user-name Bob
Erstellen Sie die JSON-Datei, die die Vertrauensbeziehung der IAM-Rolle definiert
Verwenden Sie einen Texteditor, um eine JSON-Datei zu erstellen, die die Vertrauensbeziehung definiert. Sie können die folgende Vertrauensrichtlinie als Beispiel verwenden:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Action": "sts:AssumeRole" } }
Diese Vertrauensrichtlinie ermöglicht Benutzern und Rollen des Kontos 123456789012, diese Rolle zu übernehmen, wenn sie die Aktion sts:AssumeRole in ihrer Berechtigungsrichtlinie zulassen. Sie können die Vertrauensstellung auch einschränken, sodass die IAM-Rolle nur von bestimmten IAM-Benutzern übernommen werden kann. Geben Sie dazu Prinzipale an, die arn:aws:iam: :123456789012:user/example-username ähneln. Weitere Informationen finden Sie unter Richtlinienelemente von AWS JSON: Prinzipal.
Erstellen Sie die IAM-Rolle und hängen Sie die Richtlinie an
Erstellen Sie eine IAM-Rolle, die von Bob übernommen werden kann und nur Lesezugriff auf Amazon Relational Database Service (Amazon RDS)-Instances hat. Damit ein IAM-Benutzer eine IAM-Rolle übernehmen kann, müssen Sie einen Prinzipal angeben, der es IAM-Benutzern ermöglicht, diese Rolle zu übernehmen. Ein Prinzipal ähnlich arn:aws:iam: :123456789012:root ermöglicht beispielsweise, dass alle IAM-Identitäten des Kontos 123456789012 diese Rolle übernehmen. Weitere Informationen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer.
-
Erstellen Sie die IAM-Rolle, die schreibgeschützten Zugriff auf Amazon RDS-DB-Instances hat. Ordnen Sie Ihrer IAM-Rolle die IAM-Richtlinien entsprechend Ihren Sicherheitsanforderungen zu.
Der Befehl aws iam create-role erstellt die IAM-Rolle und definiert die Vertrauensbeziehung, die Sie in der bereits erstellten JSON-Datei definiert haben. Mit dem Befehl aws iam attach-role-policy wird die von AWS verwaltete Richtlinie AmazonRDSReadOnlyAccess an die Rolle angehängt. Sie können je nach Ihren Sicherheitsanforderungen verschiedene Richtlinien (verwaltete Richtlinien und benutzerdefinierte Richtlinien) anhängen. Der Befehl aws iam list-attached-role-policies zeigt die IAM-Richtlinien an, die der IAM-Rolle example-role zugeordnet sind. Führen Sie beispielsweise die folgenden Befehle aus:
aws iam create-role --role-name example-role --assume-role-policy-document file://example-role-trust-policy.json aws iam attach-role-policy --role-name example-role --policy-arn "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess" aws iam list-attached-role-policies --role-name example-role
**Hinweis:**Stellen Sie sicher, dass Bob schreibgeschützten Zugriff auf EC2-Instances hat und die Beispielrolle übernehmen kann.
-
Erstellen Sie Zugriffsschlüssel für Bob mit dem folgenden Befehl:
aws iam create-access-key --user-name Bob
**Wichtig:**Dieser Befehl AWS-CLI gibt eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel aus. Achten Sie darauf, diese Schlüssel zu notieren.
Konfigurieren Sie die Zugriffsschlüssel
Verwenden Sie entweder das Standardprofil oder ein bestimmtes Profil, um die Zugriffsschlüssel zu konfigurieren. Um das Standardprofil zu konfigurieren, führen Sie aws configure aus. Um ein neues spezifisches Profil zu erstellen, führen Sie aws configure --profile example_-_profile-name aus. In diesem Beispiel ist das Standardprofil wie folgt konfiguriert:
aws configure AWS Access Key ID [None]: ExampleAccessKeyID1 AWS Secret Access Key [None]: ExampleSecretKey1 Default region name [None]: eu-west-1 Default output format [None]: json
Hinweis: Geben Sie für den Namen der Standardregion Ihre AWS-Region an.
Stellen Sie sicher, dass die Befehle AWS-CLI aufgerufen werden, und überprüfen Sie dann den IAM-Benutzerzugriff
Führen Sie die folgenden Schritte aus:
-
Führen Sie den Befehl aws sts get-caller-identity wie folgt aus:
aws sts get-caller-identity
Die Ausgabe des Befehls aws sts get-caller-identity enthält den ARN. Um zu überprüfen, ob die AWS-CLI-Befehle als Bob aufgerufen werden, überprüfen Sie, ob die Ausgabe etwas Ähnliches wie arn:aws:iam::123456789012:user/Bob enthält.
-
Führen Sie die folgenden Befehle aus, um zu bestätigen, dass der IAM-Benutzer schreibgeschützten Zugriff auf EC2-Instances und keinen Zugriff auf Amazon RDS-DB-Instances hat:
aws ec2 describe-instances --query "Reservations[*].Instances[*].[VpcId, InstanceId, ImageId, InstanceType]" aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier, DBName, DBInstanceStatus, AvailabilityZone, DBInstanceClass]"
Der Befehl aws ec2 describe-instances zeigt Ihnen alle EC2-Instances, die sich in der Region eu-west-1 befinden. Der Befehl aws rds describe-db-instances generiert die Fehlermeldung „Zugriff verweigert“, da Bob keinen Zugriff auf Amazon RDS hat.
Übernehmen Sie die IAM-Rolle
Führen Sie einen der folgenden Schritte aus:
Erstellen Sie ein Profil in der Datei ~/.aws/config, um eine AIM-Rolle zu verwenden. Weitere Informationen finden Sie unter Verwenden einer IAM-Rolle in der AWS CLI.
-oder-
Führen Sie die folgenden Befehle aus, um die IAM-Rolle anzunehmen:
-
Rufen Sie den ARN der Rolle mit dem folgenden Befehl ab:
aws iam list-roles --query "Roles[?RoleName == 'example-role'].[RoleName, Arn]"
-
Der Befehl listet die IAM-Rollen auf, filtert die Ausgabe jedoch nach dem Rollennamen. Führen Sie den folgenden Befehl aus, um die IAM-Rolle anzunehmen:
aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/example-role" --role-session-name AWSCLI-Session
Diese Befehle geben mehrere Informationen aus. Innerhalb des Anmeldeinformationsblocks benötigen Sie die AccessKeyId, SecretAccessKey und SessionToken. In diesem Beispiel werden die Umgebungsvariablen RoleAccessKeyID, RoleSecretKey und RoleSessionToken verwendet. Beachten Sie, dass der Zeitstempel des Ablauffeldes in der UTC-Zeitzone liegt. Der Zeitstempel gibt an, wann die temporären Anmeldeinformationen der IAM-Rolle ablaufen. Wenn die temporären Anmeldeinformationen abgelaufen sind, müssen Sie den API-Aufruf sts:AssumeRole erneut aufrufen.
**Hinweis:**Sie können den maximalen Ablauf der Sitzungsdauer für temporäre Anmeldeinformationen für IAM-Rollen mithilfe des DurationSeconds-Parameters erhöhen.
Erstellen Sie Umgebungsvariablen, um die IAM-Rolle zu übernehmen und den Zugriff zu überprüfen
-
Erstellen Sie drei Umgebungsvariablen, um die IAM-Rolle zu übernehmen. Diese Umgebungsvariablen enthalten die folgende Ausgabe:
export AWS_ACCESS_KEY_ID=RoleAccessKeyID export AWS_SECRET_ACCESS_KEY=RoleSecretKey export AWS_SESSION_TOKEN=RoleSessionToken
**Hinweis:**Ersetzen Sie für Windows-Systeme in diesem Befehl export durch set.
-
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie die IAM-Rolle übernommen haben:
aws sts get-caller-identity
Wenn Sie die example-role annehmen, gibt dieser AWS-CLI-Befehl den ARN als arn:aws:sts::123456789012:assumed-role/example-role/AWSCLI-Session statt als arn:aws:iam::123456789012:user/Bob aus.
-
Führen Sie die folgenden Befehle aus, um zu überprüfen, ob Sie eine IAM-Rolle mit schreibgeschütztem Zugriff auf Amazon RDS-DB-Instances und ohne Zugriff auf EC2-Instances erstellt haben:
aws ec2 describe-instances --query "Reservations[*].Instances[*].[VpcId, InstanceId, ImageId, InstanceType]" aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier, DBName, DBInstanceStatus, AvailabilityZone, DBInstanceClass]"
Der Befehl aws ec2 describe-instances generiert eine Fehlermeldung über einen verweigerten Zugriff. Der Befehl aws rds describe-db-instances gibt die Amazon RDS-DB-Instances zurück. Dadurch wird überprüft, ob die der IAM-Rolle zugewiesenen Berechtigungen ordnungsgemäß funktionieren.
-
Um zum IAM-Benutzer zurückzukehren, entfernen Sie die Umgebungsvariablen wie folgt:
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN aws sts get-caller-identity
Der Befehl unset entfernt die Umgebungsvariablen und der Befehl aws sts get-caller-identity überprüft, ob Sie als IAM-Benutzer Bob zurückgekehrt sind.
**Hinweis:**Setzen Sie für Windows-Systeme die Umgebungsvariablen auf leere Zeichenfolgen, um ihren Inhalt wie folgt zu löschen:
SET AWS_ACCESS_KEY_ID= SET AWS_SECRET_ACCESS_KEY= SET AWS_SESSION_TOKEN=
Ähnliche Informationen
Eine Rolle erstellen, um Berechtigungen an einen AWS-Service zu delegieren
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr