Verwenden Sie eine IAM Rolle, um Anwendungen, die auf EC2 Amazon-Instances ausgeführt werden, Berechtigungen zu erteilen - 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 Sie eine IAM Rolle, um Anwendungen, die auf EC2 Amazon-Instances ausgeführt werden, Berechtigungen zu erteilen

Anwendungen, die auf einer EC2 Amazon-Instance ausgeführt werden, müssen AWS Anmeldeinformationen in den AWS API Anfragen enthalten. Sie könnten Ihre Entwickler AWS Anmeldeinformationen direkt in der EC2 Amazon-Instance speichern lassen und Anwendungen in dieser Instance erlauben, diese Anmeldeinformationen zu verwenden. Entwickler müssten dann jedoch die Anmeldeinformationen verwalten und sicherstellen, dass sie die Anmeldeinformationen sicher an jede Instance weitergeben und jede EC2 Amazon-Instance aktualisieren, wenn es an der Zeit ist, die Anmeldeinformationen zu aktualisieren. 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 EC2 Amazon-Instance ausgeführt werden. Wenn Sie eine Rolle verwenden, müssen Sie keine langfristigen Anmeldeinformationen (wie Anmeldeinformationen oder Zugriffsschlüssel) an eine EC2 Amazon-Instance verteilen. Stattdessen stellt die Rolle temporäre Berechtigungen bereit, die Anwendungen verwenden können, wenn sie andere AWS Ressourcen aufrufen. Wenn Sie eine EC2 Amazon-Instance starten, geben Sie eine IAM Rolle an, die der Instance zugeordnet werden soll. Anwendungen, die auf der Instance ausgeführt werden, können dann die von der Rolle bereitgestellten temporären Anmeldeinformationen verwenden, um Anfragen zu signierenAPI.

Die Verwendung von Rollen zur Erteilung von Berechtigungen für Anwendungen, die auf EC2 Amazon-Instances ausgeführt werden, erfordert eine zusätzliche Konfiguration. Eine Anwendung, die auf einer EC2 Amazon-Instance ausgeführt wird, wird AWS durch das virtualisierte Betriebssystem abstrahiert. Aufgrund dieser zusätzlichen Trennung benötigen Sie einen zusätzlichen Schritt, um einer EC2 Amazon-Instance eine AWS Rolle und die zugehörigen Berechtigungen zuzuweisen und sie für ihre Anwendungen verfügbar zu machen. 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 in den API Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die in der Rolle angegeben sind.

Anmerkung

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

Weitere Informationen finden Sie unter IAMRollen mit ECS Amazon-Aufgaben verwenden im Amazon Elastic Container Service Best Practices Guide.

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 EC2 Amazon-Instance zugewiesen wird, wenn Sie sie starten, kann eine Rolle auch einer EC2 Amazon-Instance zugewiesen werden, die gerade läuft. Informationen zum Anhängen einer Rolle an eine laufende Instance finden Sie unter IAMRollen für Amazon EC2.

Wie funktionieren Rollen für EC2 Amazon-Instances?

In der folgenden Abbildung führt ein Entwickler eine Anwendung auf einer EC2 Amazon-Instance aus, die Zugriff auf den genannten S3-Bucket benötigtphotos. Ein Administrator erstellt die Get-pics Servicerolle und ordnet die Rolle der EC2 Amazon-Instance zu. Die Rolle enthält eine Berechtigungsrichtlinie, die Lesezugriff auf den angegebenen S3-Bucket gewährt. Es beinhaltet auch eine Vertrauensrichtlinie, die es der EC2 Amazon-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 EC2 Amazon-Instance, die auf eine AWS Ressource zugreift
  1. Der Administrator verwendetIAM, um die Get-pics Rolle zu erstellen. In der Vertrauensrichtlinie der Rolle gibt der Administrator an, dass nur EC2 Amazon-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 EC2 Amazon-Instance und weist dieser Instance die Get-pics Rolle zu.

    Anmerkung

    Wenn Sie die IAM Konsole verwenden, wird das Instance-Profil für Sie verwaltet und ist für Sie größtenteils transparent. Wenn Sie jedoch das AWS CLI oder verwenden, API um die Rolle und die EC2 Amazon-Instance zu erstellen und zu verwalten, müssen Sie das Instance-Profil erstellen und ihm 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, bezieht sie temporäre Sicherheitsanmeldedaten aus EC2 Amazon-Instance-Metadaten, wie unter Sicherheitsanmeldedaten aus Instance-Metadaten abrufen beschrieben. Hierbei handelt es sich um temporäre Sicherheitsanmeldeinformationen für die Rolle, die für einen begrenzten Zeitraum gültig sind.

    Bei einigen kann der Entwickler einen Anbieter verwenden AWS SDKs, der die temporären Sicherheitsanmeldedaten transparent verwaltet. (In der Dokumentation für einzelne Benutzer werden die Funktionen AWS SDKs beschrieben, die von dieser Dokumentation SDK für die Verwaltung von Anmeldeinformationen unterstützt werden.)

    Alternativ kann die Anwendung die temporären Anmeldeinformationen direkt aus den Instance-Metadaten der EC2 Amazon-Instance abrufen. 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, die AWS SDK zur Verwaltung von Anmeldeinformationen zu verwenden, sodass die Anwendung keine zusätzliche Logik zum Aktualisieren der Anmeldeinformationen enthalten muss. 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 Verwendung von Rollen mit Amazon EC2

Um eine Instance mit einer Rolle zu starten, benötigt der Entwickler die Erlaubnis, EC2 Amazon-Instances zu starten und IAM Rollen weiterzugeben.

Die folgende Beispielrichtlinie ermöglicht es Benutzern, die zu verwenden AWS Management Console , um eine Instance mit einer Rolle zu starten. Die Richtlinie enthält Platzhalter (*), damit ein Benutzer eine beliebige Rolle übergeben und die aufgelisteten EC2 Amazon-Aktionen ausführen kann. Die ListInstanceProfiles-Aktion ermöglicht den Benutzern, alle im AWS-Konto verfügbaren Rollen anzuzeigen.

Beispielrichtlinie, die einem Benutzer die Erlaubnis erteilt, die EC2 Amazon-Konsole zum Starten einer Instance mit einer beliebigen Rolle zu verwenden
{ "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, welche Rollen an EC2 Amazon-Instances übergeben werden können (mit PassRole)

Sie können die PassRole Berechtigung verwenden, um einzuschränken, welche Rolle ein Benutzer an eine EC2 Amazon-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. Stellen Sie sich zum Beispiel vor, dass die Benutzerin Alice nur die Rechte hat, EC2 Amazon-Instances zu starten und mit Amazon S3-Buckets zu arbeiten, aber die Rolle, die sie an eine EC2 Amazon-Instance weitergibt, hat Berechtigungen, mit IAM Amazon DynamoDB zu arbeiten. In diesem Fall kann Alice die Instance möglicherweise starten, sich bei ihr anmelden, temporäre Sicherheitsanmeldedaten abrufen und dann DynamoDB-Aktionen ausführenIAM, für die sie nicht autorisiert ist.

Um einzuschränken, welche Rollen ein Benutzer an eine EC2 Amazon-Instance übergeben kann, erstellen Sie eine Richtlinie, die die PassRole Aktion zulässt. Anschließend fügen Sie die Richtlinie dem Benutzer (oder einer IAM Gruppe, der der Benutzer angehört) zu, der EC2 Amazon-Instances starten wird. Im Resource Element der Richtlinie listen Sie die Rolle oder Rollen auf, die der Benutzer an EC2 Amazon-Instances weitergeben darf. Wenn der Benutzer eine Instance startet und ihr eine Rolle zuordnet, EC2 prüft Amazon, ob der Benutzer diese Rolle weitergeben darf. 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

PassRoleist keine API Aktion auf die gleiche Weise wie RunInstances oderListInstanceProfiles. Stattdessen handelt es sich um eine Berechtigung, die AWS überprüft, wann immer eine Rolle als Parameter an eine übergeben ARN wird API (oder die Konsole dies im Namen des Benutzers tut). Damit kann der Administrator steuern, welche Rollen von welchen Benutzern übergeben werden dürfen. In diesem Fall wird sichergestellt, dass der Benutzer einer EC2 Amazon-Instance eine bestimmte Rolle zuweisen darf.

Beispielrichtlinie, die einem Benutzer die Erlaubnis erteilt, eine EC2 Amazon-Instance mit einer bestimmten Rolle zu starten

Die folgende Beispielrichtlinie ermöglicht es Benutzern, Amazon zu verwenden EC2API, um eine Instance mit einer Rolle zu starten. Das Resource Element gibt den Amazon-Ressourcennamen (ARN) einer Rolle an. Durch die ARN Angabe von erteilt die Richtlinie dem Benutzer die Erlaubnis, nur die Get-pics Rolle 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 EC2 Amazon-Instance ausgeführt wird, erlauben, Befehle in einem anderen Konto auszuführen. Dazu müssen Sie der EC2 Amazon-Instance-Rolle im ersten Konto erlauben, zu einer Rolle im zweiten Konto zu wechseln.

Stellen Sie sich vor, Sie verwenden zwei AWS-Konten und möchten einer Anwendung, die auf einer EC2 Amazon-Instance ausgeführt wird, erlauben, AWS CLIBefehle in beiden Konten auszuführen. Gehen Sie davon aus, dass die EC2 Amazon-Instanz im Konto vorhanden ist111111111111. 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.

Das Diagramm zeigt, wie ein Entwickler eine EC2 Amazon-Instance mit der Rolle startet, Zugriff auf Fotos in einem Amazon S3-Bucket zu erhalten.

Die abcd EC2 Amazon-Instance-Profilrolle muss über die folgende Berechtigungsrichtlinie verfügen, 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 darauf vertrauen, dass der EC2 Amazon-Service die Rolle übernimmt. 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 zu verstehen, wie Rollen mit EC2 Amazon-Instances funktionieren, müssen Sie die IAM Konsole verwenden, um eine Rolle zu erstellen, eine EC2 Amazon-Instance zu starten, die diese Rolle verwendet, und dann die laufende Instance untersuchen. 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 oder Rollen für EC2 Amazon-Instances finden Sie in den folgenden Informationen: