Wie übernehme ich mit der AWS-CLI eine IAM-Rolle?

Lesedauer: 7 Minute
0

Ich möchte mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) eine Rolle im AWS Identity and Access Management (IAM) übernehmen.

Behebung

Gehen Sie wie folgt vor, um mithilfe der AWS CLI eine IAM-Rolle zu übernehmen und schreibgeschützten Zugriff auf Amazon Elastic Compute Cloud (Amazon EC2)-Instances zu haben:

**Hinweis:**Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, überprüfen Sie, ob Sie eine aktuelle Version der AWS CLI ausführen.

Wichtig: Wenn Sie die Befehle in den folgenden Schritten ausführen, werden Ihre Anmeldeinformationen, z. B. Passwörter, im Klartext angezeigt. 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

1.Erstellen Sie mithilfe der AWS-CLI einen IAM-Benutzer mit dem folgenden Befehl:

**Hinweis:**Ersetzen Sie Bob durch Ihren IAM-Benutzernamen.

aws iam create-user --user-name Bob

2.Erstellen Sie mithilfe der AWS-CLI die IAM-Richtlinie, die Bob die Berechtigungen gewährt. Erstellen Sie die JSON-Datei, die die IAM-Richtlinie definiert, mit Ihrem bevorzugten Texteditor. Sie können beispielsweise vim, einen Texteditor, der häufig auf Linux verwendet wird, wie folgt verwenden:

**Hinweis:**Ersetzen Sie das Beispiel durch Ihren eigenen Richtliniennamen, Benutzernamen, Rolle, JSON-Dateinamen, Profilnamen und Schlüssel.

vim example-policy.json

3.Der Inhalt der Datei example-policy.json ähnelt dem Folgenden:

{
  "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

1.Verwenden Sie den folgenden Befehl aws iam create-policy:

aws iam create-policy --policy-name example-policy --policy-document file://example-policy.json

Der Befehl aws iam create-policy gibt mehrere Informationen aus, darunter den ARN (Amazon Resource Name) der IAM-Richtlinie wie folgt:

arn:aws:iam::123456789012:policy/example-policy

**Hinweis:**Ersetzen Sie 123456789012 durch Ihr eigenes Konto.

2.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

1.Erstellen Sie die JSON-Datei, die die Vertrauensbeziehung wie folgt definiert:

vim example-role-trust-policy.json

2.Der Inhalt der Datei example-role-trust-policy.json ähnelt dem Folgenden:

{
  "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. Sie können dies tun, indem Sie Prinzipale ähnlich wie arn:aws:iam::123456789012:user/example-username angeben. 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. Da die IAM-Rolle von einem IAM-Benutzer übernommen wird, 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 diese Rolle übernehmen. Weitere Informationen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer.

1.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 gemäß der JSON-Datei, die Sie im vorherigen Abschnitt erstellt 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. Sehen Sie sich die folgenden Befehlsbeispiele an:

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.

2.Erstellen Sie Zugriffsschlüssel für Bob mit dem folgenden Befehl:

aws iam create-access-key --user-name Bob

Der 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

1.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

1.Führen Sie den Befehl aws sts get-caller-identity wie folgt aus:

aws sts get-caller-identity

Der Befehl aws sts get-caller-identity gibt drei Informationen aus, einschließlich des ARN. Die Ausgabe zeigt etwas Ähnliches wie arn:aws:iam::123456789012:user/Bob, um zu überprüfen, ob die Befehle AWS-CLI als Bob aufgerufen werden.

2.Vergewissern Sie sich, dass der IAM-Benutzer schreibgeschützten Zugriff auf EC2-Instances und keinen Zugriff auf Amazon RDS-DB-Instances hat, indem Sie die folgenden Befehle ausführen:

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 sollte Ihnen alle EC2-Instances anzeigen, die sich in der Region eu-west-1 befinden. Der Befehl aws rds describe-db-instances muss eine Fehlermeldung „Zugriff verweigert“ generieren, da Bob keinen Zugriff auf Amazon RDS hat.

Übernehmen Sie die IAM-Rolle

Führen Sie einen der folgenden Schritte aus:

Verwenden Sie eine IAM-Rolle, indem Sie ein Profil in der Datei ~/.aws/config erstellen. Weitere Informationen finden Sie unter Verwenden einer IAM-Rolle in der AWS CLI.

-oder-

Nehmen Sie die IAM-Rolle an, indem Sie wie folgt vorgehen:

1.Rufen Sie den ARN der Rolle ab, indem Sie den folgenden Befehl ausführen:

aws iam list-roles --query "Roles[?RoleName == 'example-role'].[RoleName, Arn]"

2.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

Der AWS-CLI-Befehl gibt 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

1.Erstellen Sie drei Umgebungsvariablen, um die IAM-Rolle zu übernehmen. Diese Umgebungsvariablen werden mit der folgenden Ausgabe gefüllt:

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.

2.Stellen Sie sicher, dass Sie die IAM-Rolle übernommen haben, indem Sie den folgenden Befehl ausführen:

aws sts get-caller-identity

Der AWS-CLI-Befehl sollte den ARN als arn:aws:sts::123456789012:assumed-role/example-role/AWSCLI-Session statt als arn:aws:iam::123456789012:user/Bob ausgeben, um zu überprüfen, ob Sie die Beispielrolle übernommen haben.

3.Stellen Sie mithilfe der folgenden Befehle sicher, dass 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 sollte eine Fehlermeldung über einen verweigerten Zugriff generieren. Der Befehl aws rds describe-db-instances sollte die Amazon RDS-DB-Instances zurückgeben. Dadurch wird überprüft, ob die der IAM-Rolle zugewiesenen Berechtigungen ordnungsgemäß funktionieren.

4.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

Rollen, Begriffe und Konzepte

Rolle erstellen

Eine Rolle erstellen, um Berechtigungen an einen AWS-Service zu delegieren