Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie kann ich IAM-Rollen verwenden, um API-Aufrufe von bestimmten IP-Adressen an die AWS-Managementkonsole einzuschränken?
Ich möchte die Rollen von AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement) verwenden, um den Zugriff von API-Aufrufen auf die AWS-Managementkonsole einzuschränken.
Kurzbeschreibung
Du kannst den globalen Bedingungsschlüssel aws:SourceIp im Bedingungselement einer IAM-Richtlinie verwenden, um API-Aufrufe von bestimmten IP-Adressen einzuschränken. Dadurch wird jedoch der Zugriff auf AWS-Services wie AWS CloudFormation verweigert, die in deinem Namen Anrufe tätigen, sofern du nicht auch die globale Bedingung aws:ViaAWSService verwendest. Weitere Informationen findest du unter AWS: Verweigert den Zugriff auf AWS auf der Grundlage der Quell-IP.
Angenommen, du hast eine AWS-Servicerolle, die es AWS CloudFormation ermöglicht, Amazon Elastic Compute Cloud (Amazon EC2) aufzurufen, um eine Instanz zu stoppen. Die Anfrage wird abgelehnt, weil der Zieldienst (Amazon EC2) die IP-Adresse des anrufenden Dienstes (AWS CloudFormation) sieht und nicht die des ursprünglichen Benutzers. Du kannst die ursprüngliche IP-Adresse nicht über einen anrufenden Dienst an den Zieldienst weitergeben, um sie in einer IAM-Richtlinie auszuwerten.
Lösung
Erstelle eine IAM-Rolle, der dieselben Berechtigungen angehängt sind wie die IAM-Richtlinie, die an den IAM-Benutzer angehängt ist. Dadurch erhält der IAM-Benutzer nur dann die Berechtigung, die Rolle sts:AssumeRole-API zu übernehmen, wenn die Anfrage von der angegebenen IP-Adresse kommt. Dies liegt an der aws:SourceIP-Einschränkungsprüfung, die durchgeführt wird, wenn der Benutzer versucht, die Rolle anzunehmen. Wenn der Benutzer die IAM-Rolle übernimmt, erhält er die Berechtigungen der IAM-Richtlinie, die ihm zugeordnet ist. Da die der Rolle zugeordnete IAM-Richtlinie den Bedingungsschlüssel aws:SourceIp nicht verwendet, ist der Zugriff auf AWS-Services zulässig.
Erstelle die folgende IAM-Richtlinie und hänge diese Richtlinie dann an einen IAM-Benutzer an, der über programmatischen Zugriff verfügt. Diese IAM-Richtlinie erlaubt es dem IAM-Benutzer, AssumeRole mit dem Rollennamen Bob zu übernehmen. Bob benötigt keine zusätzlichen Berechtigungen. Alle anderen erforderlichen Berechtigungen werden erworben, wenn der IAM-Benutzer erfolgreich die Rolle Bob annimmt.
Hinweis:
- Wenn du beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, stelle sicher, dass du die neueste AWS CLI-Version verwendest.
- Ersetze Bob durch deinen IAM-Rollennamen und EXAMPLEIAMACCOUNTID durch deine Konto-ID.
Beispiel für eine IAM-Benutzerrichtlinie
Diese Beispielrichtlinie verfügt über Berechtigungen zum Ausführen von API-Aufrufen für die Ressourcen im Konto.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::EXAMPLEIAMACCOUNTID:role/Bob" } }
Erstelle die IAM-Rolle Bob, um Berechtigungen an den IAM-Benutzer zu delegieren. Folge den Anweisungen zum Erstellen einer IAM-Rolle (Konsole). Du kannst auch die AWS-CLI oder API verwenden.
Hinweis:
- Wenn du die Rolle mithilfe der Konsole erstellst, ändere die Rollen-Vertrauensrichtlinie ähnlich wie in diesem Beispiel für die **Bob-**Vertrauensrichtlinie. Mithilfe der AWS-CLI create-role oder der API CreateRole kannst du das Dokument zur Trust Relationship-Richtlinie als Wert in den Dokumentparameter update-assume-role-policy übergeben.
- Die Anfrage muss aus dem angegebenen IP-Adressbereich 103.15.250.0/24 oder 12.148.72.0/23 kommen. Andernfalls kann der IAM-Benutzer die Rolle nicht übernehmen und API-Aufrufe tätigen.
Beispiel für eine Vertrauensrichtlinie für IAM-Rollen
Dieses Beispiel für eine Vertrauensrichtlinie ermöglicht es dem Benutzer, die Rolle zu übernehmen, wenn die Anfrage aus dem IP-Adressbereich 103.15.250.0/24 oder 12.148.72.0/23 kommt.
Hinweis: Ersetze YOURIAMUSERNAME durch deinen IAM-Benutzernamen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:user/YOURIAMUSERNAME" }, "Action": "sts:AssumeRole" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::account-id:user/YOURIAMUSERNAME" }, "Action": "sts:AssumeRole", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "103.15.250.0/24", "12.148.72.0/23" ] } } } ] }
Hinweis: Diese Problemumgehung unterbricht die AWS CloudTrail-Protokolle, da Aktionen von der IAM-Rolle ausgeführt werden, die der Benutzer übernommen hat, und nicht vom IAM-Benutzer. Der vom IAM-Benutzer ausgeführte assumeRole-API-Aufruf wird in den CloudTrail-Protokollen unter dem IAM-Benutzer protokolliert. Alle zusätzlichen API-Aufrufe, die von der IAM-Rolle ausgeführt werden, werden in CloudTrail-Protokollen unter dem Rollennamen protokolliert.
Ähnliche Informationen
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr