Warum verwendet meine Amazon EC2-Instance IAM-Benutzeranmeldeinformationen anstelle von Rollenanmeldeinformationen?

Lesedauer: 3 Minute
0

Ich habe eine AWS Identity and Access Management (IAM)-Rolle an eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance angehängt. Die Amazon EC2-Instance führt jedoch API-Aufrufe mit einem IAM-Benutzer statt mit einer IAM-Rolle durch.

Kurzbeschreibung

Die AWS-Befehlszeilenschnittstelle (AWS CLI) verwendet eine Reihe von Anbietern von Anmeldeinformationen, um nacheinander nach AWS-Anmeldeinformationen zu suchen. Die verwendeten Anmeldeinformationen hängen von der Reihenfolge und Rangfolge der Anbieter der Anmeldeinformationen ab. Weitere Informationen finden Sie unter Konfigurationseinstellungen und Rangfolge.

Lösung

Folgen Sie den Anweisungen, um die IAM-Benutzer-ID und den Speicherort der IAM-Benutzeranmeldeinformationen zu ermitteln. Verwenden Sie dann die AWS-CLI, um die IAM-Anmeldeinformationen zu verwalten, und verwerfen Sie die Einstellung für die höhere Priorität.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Suchen Sie die IAM-Benutzer-ID und rufen Sie den Speicherort der IAM-Benutzeranmeldeinformationen ab

1.    Führen Sie den folgenden Befehl get-caller-identity aus, um zu überprüfen, welche IAM-Anmeldeinformationen für API-Aufrufe verwendet werden:

aws sts get-caller-identity

Sie erhalten eine Ausgabe, die der folgenden ähnelt:

{

    "Account": "123456789012",

    "UserId": "AIDACKCEVSQ6C2EXAMPLE",

    "Arn": "arn:aws:iam::123456789012:user/ExampleIAMuser"

}

In dieser Beispielausgabe stammen die verwendeten IAM-Anmeldeinformationen von ExampleIAMUser.

2.    Verwenden Sie die Option --debug, um den Speicherort der Benutzeranmeldeinformationen zu überprüfen, ähnlich wie im Folgenden:

aws s3 ls --debug
2020-03-28 02:04:29,478 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

In dieser Beispielausgabe werden die IAM-Benutzeranmeldeinformationen in der Datei .aws/credentials gespeichert. Da diese Anmeldeinformationen eine höhere Priorität haben als Rollenanmeldeinformationen, werden IAM-Benutzeranmeldeinformationen für API-Aufrufe verwendet.

Verwenden Sie die AWS-CLI, um die IAM-Anmeldeinformationen zu verwalten und die Einstellung für die höhere Priorität zu verwerfen

Verwenden Sie die folgenden bewährten Methoden:

  • Stellen Sie sicher, dass Sie die Option --profile nicht mit der AWS-CLI verwenden.
  • Deaktiviert oder entfernt alle Umgebungsvariablen.
  • Löschen Sie für den Befehl konfigurieren die Datei mit den Anmeldeinformationen im Ordner .aws/credentials. Löschen Sie dann den Ordner .aws, um die Standardanmeldeinformationen für das Instanzprofil festzulegen.
  • Löschen Sie bei Profilen, die in der Datei .aws/config eingerichtet sind, das Profil. Löschen Sie dann den Ordner .aws.

Nachdem Sie den Vorrang der Konfigurationseinstellungen vor den IAM-Anmeldeinformationen entfernt haben, führen Sie den Befehl get-caller-identity aus, um die Anmeldeinformationen für die IAM-Rolle zu überprüfen, der dem folgenden ähnelt:

aws sts get-caller-identity

{
    "UserId": "AROACKCEVSQ6C2EXAMPLE:i-01773d4a8ed647342",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/ExampleInstanceRole/i-01773d4a8ed647342"
}

In dieser Beispielausgabe entsprechen die verwendeten IAM-Anmeldeinformationen der IAM-Rolle ExampleInstanceRole.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren