Verwenden einer IAM-Rolle zum Erteilen von Berechtigungen für Anwendungen, die auf Amazon EC2-Instances ausgeführt werden - AWS Identitäts- und Zugriffsverwaltung

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden einer IAM-Rolle zum Erteilen von Berechtigungen für Anwendungen, die auf Amazon EC2-Instances ausgeführt werden

Anwendungen, die auf einer Amazon-EC2-Instance ausgeführt werden, müssen AWS-Anmeldeinformationen in den AWS-API-Anforderungen enthalten.. Sie können Ihre Entwickler AWS-Anmeldeinformationen direkt in der Amazon-EC2-Instance speichern lassen und den Anwendungen in dieser Instance erlauben, diese Anmeldeinformationen zu verwenden. Allerdings müssten Entwickler dann die Anmeldeinformationen verwalten und sicherstellen, dass sie die Anmeldeinformationen sicher an jede Instance weitergeben und jede Amazon-EC2-Instance aktualisieren, wenn es Zeit für die Aktualisierung der Anmeldeinformationen ist. Das ist eine Menge zusätzlicher Arbeit.

Stattdessen können und sollten Sie eine IAM-Rolle verwenden, um temporäre Anmeldeinformationen für Anwendungen zu verwalten, die auf einer Amazon-EC2-Instance ausgeführt werden. Wenn Sie eine Rolle verwenden, müssen Sie keine langfristigen Anmeldeinformationen (wie Benutzername und Passwort oder Zugriffsschlüssel) an eine Amazon-EC2-Instance verteilen. Stattdessen stellt die Rolle temporäre Berechtigungen bereit, die von den Anwendungen beim Aufrufen von anderen AWS-Ressourcen genutzt werden können. Wenn Sie eine Amazon EC2-Instance starten, geben Sie eine mit der Instance zu verknüpfende IAM-Rolle an. Anwendungen, die auf der Instance ausgeführt werden, können dann die von der Rolle bereitgestellten temporären Anmeldeinformationen für API-Anforderungen verwenden.

Die Verwendung von Rollen zur Erteilung von Berechtigungen für Anwendungen, die auf Amazon-EC2-Instances ausgeführt werden, erfordert etwas mehr Konfigurationsaufwand. Eine Anwendung, die auf einer Amazon-EC2-Instance ausgeführt wird, wird vom virtualisierten Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung ist ein zusätzlicher Schritt erforderlich, um einer Amazon-EC2-Instance eine AWS-Rolle und die damit verbundenen Berechtigungen zuzuweisen und diese den Anwendungen zur Verfügung zu stellen. Dieser zusätzliche Schritt ist die Erstellung eines Instance-Profils, das einer Instance angefügt wird. Das Instance-Profil enthält die Rolle und kann einer auf einer Instance ausgeführten Anwendung die temporären Anmeldeinformationen der Rolle zur Verfügung stellen. Diese temporären Anmeldeinformationen können dann für die API-Aufrufe der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff auf die in der Rolle angegebenen Ressourcen zu beschränken.

Anmerkung

Einer Amazon-EC2-Instance kann jeweils nur eine Rolle zugewiesen werden und alle Anwendungen auf der Instance haben dieselbe Rolle und dieselben Berechtigungen. Wenn Sie Amazon ECS zur Verwaltung Ihrer Amazon-EC2-Instances nutzen, können Sie Amazon-ECS-Aufgaben Rollen zuweisen, die sich von der Rolle der Amazon-EC2-Instance unterscheiden lassen, auf der sie ausgeführt werden. Die Zuweisung einer Rolle für jede Aufgabe entspricht dem Prinzip des Zugriffs mit den geringsten Privilegien und ermöglicht eine differenzierte Kontrolle über Aktionen und Ressourcen.

Weitere Informationen finden Sie unter Verwenden von IAM-Rollen mit Amazon-ECS-Aufgaben im Handbuch zu bewährten Methoden zu Amazon Elastic Container Service.

Diese Verwendungsweise von Rollen hat mehrere Vorteile. Da Rollenanmeldeinformationen temporär sind und automatisch aktualisiert werden, müssen Sie die Anmeldeinformationen nicht verwalten und sich keine Sorgen über langfristige Sicherheitsrisiken machen. Wenn Sie darüber hinaus eine einzelne Rolle für mehrere Instances verwenden, werden alle Änderungen in dieser Rolle automatisch an alle Instances propagiert.

Anmerkung

Obwohl eine Rolle normalerweise einer Amazon-EC2-Instance zugewiesen wird, wenn Sie sie starten, kann eine Rolle auch einer Amazon-EC2-Instance angehängt werden, diese gerade ausgeführt wird. Weitere Informationen zum Anfügen einer Rolle an eine ausgeführte Instance erhalten Sie unter IAM-Rollen für Amazon EC2.

Wie funktionieren Rollen für Amazon-EC2-Instances?

In der folgenden Abbildung führt ein Entwickler eine Anwendung auf einer Amazon-EC2-Instance aus, die Zugriff auf den S3-Bucket namens photos benötigt. Ein Administrator erstellt die Servicerolle Get-pics und weist die Rolle der Amazon-EC2-Instance zu. Die Rolle enthält eine Berechtigungsrichtlinie, die Lesezugriff auf den angegebenen S3-Bucket gewährt. Sie enthält auch eine Vertrauensrichtlinie, die es der Amazon-EC2-Instance ermöglicht, die Rolle zu übernehmen und die temporären Anmeldeinformationen abzurufen. Wenn die Anwendung auf der Instance ausgeführt wird, kann sie mithilfe der temporären Anmeldeinformationen der Rolle auf den photos-Bucket zugreifen. Der Administrator muss dem Entwickler keine Berechtigung für den Zugriff auf den photos-Bucket gewähren und der Entwickler muss die Anmeldeinformationen nie weitergeben oder verwalten.


        Anwendung auf einer Amazon-EC2-Instance mit Zugriff auf eine AWS-Ressource
  1. Der Administrator erstellt mit IAM die Rolle Get-pics. In der Vertrauensrichtlinie der Rolle legt der Administrator fest, dass nur Amazon-EC2-Instances die Rolle übernehmen können. In der Berechtigungsrichtlinie der Rolle gibt der Administrator Leseberechtigungen für den Bucket photos an.

  2. Ein Entwickler startet eine Amazon-EC2-Instance und weist die Rolle Get-pics dieser Instance zu.

    Anmerkung

    Wenn Sie die IAM-Konsole verwenden, wird das Instance-Profil für Sie verwaltet und ist Ihnen gegenüber weitestgehend transparent. Wenn Sie jedoch das AWS CLI oder die API verwenden, um die Rolle und die Amazon-EC2-Instance zu erstellen und zu verwalten, dann müssen Sie das Instance-Profil erstellen und die Rolle in separaten Schritten zuweisen. In diesem Fall müssen Sie den Instance-Profilnamen anstelle des Rollennamens angeben, wenn Sie die Instance starten.

  3. Wenn die Anwendung ausgeführt wird, erhält sie temporäre Sicherheitsanmeldeinformationen von den Amazon EC2-Instance-Metadaten, wie unter Abrufen von Sicherheitsanmeldeinformationen von Instance-Metadaten beschrieben. Hierbei handelt es sich um temporäre Sicherheitsanmeldeinformationen für die Rolle, die für einen begrenzten Zeitraum gültig sind.

    Bei einigen AWS SDKs kann der Entwickler einen Anbieter verwenden, der die temporären Anmeldeinformationen transparent verwaltet. (Die Dokumentation für einzelne AWS SDKs beschreibt die vom entsprechenden SDK zur Verwaltung von Anmeldeinformationen unterstützen Features.)

    Alternativ kann die Anwendung die temporären Anmeldeinformationen auch direkt aus den Instance-Metadaten der Amazon-EC2-Instance beziehen. Die Anmeldeinformationen und die zugehörigen Werte sind in der Kategorie iam/security-credentials/role-name (in diesem Fall iam/security-credentials/Get-pics) der Metadaten verfügbar. Wenn die Anwendung die Anmeldeinformationen aus den Instance-Metadaten bezieht, können die Anmeldeinformationen zwischengespeichert werden.

  4. Mithilfe der erhaltenen temporären Anmeldeinformationen greift die Anwendung auf den Bucket "photos" zu. Aufgrund der zur Rolle Get-pics angefügten Richtlinie verfügt die Anwendung nur über Leseberechtigungen.

    Die in der Instance verfügbaren temporären Sicherheitsanmeldeinformationen werden vor deren Ablauf automatisch aktualisiert, sodass immer gültige Anmeldeinformationen verfügbar sind. Die Anwendung muss lediglich sicherstellen, dass sie neue Anmeldeinformationen von den Instance-Metadaten erhält, bevor die aktuellen Anmeldeinformationen ablaufen. Es ist möglich, AWS SDK zum Verwalten von Anmeldeinformationen zu verwenden, damit keine weiteren Anweisungen für die Anwendung erforderlich sind, um die Anmeldeinformationen zu aktualisieren. Zum Beispiel das Instanceiieren von Clients mit Anbietern von Anmeldeinformationen für Instance-Profile. Erhält jedoch die Anwendung temporäre Anmeldeinformationen von den Instance-Metadaten und speichert diese im Cache, sollte die Anwendung die Anmeldeinformationen stündlich oder mindestens 15 Minuten vor deren Ablauf aktualisieren. Die Ablaufzeit ist in den Informationen enthalten, die in der Kategorie iam/security-credentials/role-name zurückgegeben wird.

Erforderliche Berechtigungen für die Nutzung von Rollen mit Amazon EC2

Um eine Instance mit einer Rolle zu starten, muss der Entwickler über die Berechtigung zum Starten von Amazon-EC2-Instances und die Berechtigung zum Übergeben von IAM-Rollen verfügen.

In der folgenden Beispielrichtlinie wird den Benutzern ermöglicht, zum Starten einer Instance mit einer Rolle die AWS Management Console zu verwenden. Die Richtlinie enthält Platzhalter (*), um einem Benutzer die Übergabe von beliebigen Rollen und die Ausführung beliebiger Amazon-EC2-Aktionen zu gestatten. Die ListInstanceProfiles-Aktion ermöglicht den Benutzern, alle im AWS-Konto verfügbaren Rollen anzuzeigen.

Beispielrichtlinie, mit der eine Benutzerberechtigung zum Starten einer Instance mit einer beliebigen Rolle über die Amazon EC2-Konsole erteilt wird
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } }, { "Sid": "ListEc2AndListInstanceProfiles", "Effect": "Allow", "Action": [ "iam:ListInstanceProfiles", "ec2:Describe*", "ec2:Search*", "ec2:Get*" ], "Resource": "*" } ] }

Einschränken der Rollen, die an Amazon-EC2-Instances weitergegeben werden können (Verwendung von PassRole)

Sie können die PassRole-Berechtigung verwenden, um einzuschränken, welche Rolle ein Benutzer an eine Amazon-EC2-Instance übergeben kann, wenn der Benutzer die Instance startet. Dadurch können Sie verhindern, dass ein Benutzer Anwendungen ausführt, die über mehr Berechtigungen als der Benutzer verfügen, das heißt, um zu vermeiden, dass der Benutzer erhöhte Berechtigungen erhält. Angenommen, die Benutzerin Alice verfügt nur über Berechtigungen zum Starten von Amazon-EC2-Instances und für den Zugriff auf Amazon-S3-Buckets, aber die von ihr an eine Amazon-EC2-Instance übergeben Rolle verfügt über Zugriffsberechtigungen auf IAM und Amazon DynamoDB. In diesem Fall könnte Alice in der Lage sein, die Instance zu starten, sich bei ihr anzumelden, temporäre Sicherheitsanmeldeinformationen zu erhalten und dann IAM- oder DynamoDB-Aktionen durchzuführen, für die sie nicht autorisiert ist.

Um einzuschränken, welche Rollen ein Benutzer an eine Amazon-EC2-Instance übergeben kann, erstellen Sie eine Richtlinie, die die Aktion PassRole zulässt. Anschließend fügen Sie die Richtlinie dem Benutzer (oder einer IAM-Gruppe, zu der der Benutzer gehört) zu, der Amazon-EC2-Instances starten wird. Im Element Resource der Richtlinie führen Sie die Rolle oder Rollen auf, die der Benutzer an Amazon-EC2-Instances übergeben darf. Wenn der Benutzer eine Instance startet und ihr ein Rolle zuordnet, prüft Amazon EC2, ob der Benutzer zum Übergeben dieser Rolle berechtigt ist. Selbstverständlich sollten Sie auch sicherstellen, dass die Rolle, die der Benutzer übergeben darf, nicht mehr Berechtigungen enthält, als für den Benutzer vorgesehen ist.

Anmerkung

PassRole ist keine API-Aktion im Sinne von RunInstances oder ListInstanceProfiles. Stattdessen handelt es sich um eine Berechtigung, die AWS prüft, wenn der ARN einer Rolle als Parameter an eine API übergeben wird (oder wenn die Konsole den ARN im Namen des Benutzers übergibt). Damit kann der Administrator steuern, welche Rollen von welchen Benutzern übergeben werden dürfen. In diesem Fall wird sichergestellt, dass der Benutzer eine spezifische Rolle einer Amazon EC2-Instance anfügen darf.

Beispielrichtlinie, mit der eine Benutzerberechtigung zum Starten einer Amazon-EC2-Instance mit einer bestimmten Rolle erteilt wird

In der folgenden Beispielrichtlinie wird den Benutzern ermöglicht, die Amazon EC2-API zum Starten einer Instance mit einer Rolle zu verwenden. Das Element Resource gibt den Amazon-Ressourcenamen (ARN) einer Rolle an. Indem Sie den ARN angeben, erteilt die Richtlinie dem Benutzer die Berechtigung, nur die Rolle Get-pics zu übergeben. Wenn der Benutzer versucht, eine andere Rolle beim Starten einer Instance anzugeben, schlägt die Aktion fehl. Der Benutzer ist nicht zum Ausführen einer beliebigen Instance berechtigt, unabhängig davon, ob er eine Rolle übergibt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/Get-pics" } ] }

Einer Instance-Profilrolle den Wechsel zu einer Rolle in eine anderen Konto erlauben

Sie können einer Anwendung, die auf einer Amazon EC2-Instance ausgeführt wird, das Ausführen von Befehlen in einem anderen Konto erlauben. Dazu müssen Sie der Amazon-EC2-Instance-Rolle im ersten Konto den Wechsel zu einer Rolle im zweiten Konto erlauben.

Angenommen, Sie verwenden zwei AWS-Konten und möchten einer Anwendung, die auf einer Amazon-EC2-Instance läuft, erlauben, AWS CLI-Befehle in beiden Konten auszuführen. Gehen Sie davon aus, dass die Amazon-EC2-Instance im Konto 111111111111 vorhanden ist. Diese Instance enthält die abcd-Instance-Profilrolle, die der Anwendung erlaubt, schreibgeschützte Amazon S3-Aufgaben für den my-bucket-1-Bucket innerhalb desselben 111111111111 Kontos auszuführen. Die Anwendung muss jedoch auch die Möglichkeit haben, die efgh-kontoübergreifende Rolle anzunehmen, um auf den Amazon S3-Bucket my-bucket-2 im Konto 222222222222 zuzugreifen.

Der Instance-Profil-Rolle abcd von Amazon EC2 muss die folgende Berechtigungsrichtlinie zugeordnet sein, damit die Anwendung auf den my-bucket-1 Amazon-S3-Bucket zugreifen kann:

Konto 111111111111 abcd Rollen-Berechtigungsrichtlinie

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::my-bucket-1/*", "arn:aws:s3:::my-bucket-1" ] }, { "Sid": "AllowIPToAssumeCrossAccountRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/efgh" } ] }

Die abcd-Rolle muss dem Amazon EC2-Service vertrauen, um die Rolle anzunehmen. Dazu benötigt die abcd-Rolle die folgende Vertrauensrichtlinie:

Konto 111111111111 abcd Rolle Treuhandpolitik

{ "Version": "2012-10-17", "Statement": [ { "Sid": "abcdTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"Service": "ec2.amazonaws.com"} } ] }

Gehen Sie davon aus, dass die kontoübergreifende efgh-Rolle die Ausführung schreibgeschützter Amazon S3-Aufgaben für den my-bucket-2-Bucket im selben 222222222222-Konto zulässt. Dazu muss der kontoübergreifenden efgh-Rolle die folgende Berechtigungsrichtlinie zugeordnet sein:

Konto 222222222222 efgh Rollen-Berechtigungsrichtlinie

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::my-bucket-2/*", "arn:aws:s3:::my-bucket-2" ] } ] }

Die efgh-Rolle muss für die Übernahme der abcd-Instance-Profilrolle vertrauen. Dazu benötigt die efgh-Rolle die folgende Vertrauensrichtlinie:

Konto 222222222222 efgh Rolle Treuhandpolitik

{ "Version": "2012-10-17", "Statement": [ { "Sid": "efghTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"} } ] }

Was sind die ersten Schritte?

Um die Funktionsweise einer Rolle mit Amazon-EC2-Instances nachzuvollziehen, müssen Sie mithilfe der IAM-Konsole eine Rolle erstellen, eine Amazon-EC2-Instance starten, die diese Rolle verwendet und dann die laufende Instance analysieren. Sie können die Instance-Metadaten untersuchen, um nachzuvollziehen, wie die Instance die temporären Anmeldeinformationen der Rolle erhält. Sie können außerdem nachvollziehen, wie eine auf der Instance ausgeführte Anwendung diese Rolle verwenden kann. Verwenden Sie die folgenden Ressourcen, um weitere Informationen zu erhalten.

Weitere Informationen zum Erstellen von Rollen für Amazon-EC2-Instances finden Sie in den folgenden Informationen: