Wie kann ich den Zugriff auf eine bestimmte IAM-Rollensitzung mithilfe einer identitätsbasierten IAM-Richtlinie einschränken?

Letzte Aktualisierung: 31.01.2022

Ich möchte Berechtigungen für eine bestimmte AWS-Identity-and-Access-Management-Rollensitzung (IAM) mit einer identitätsbasierten Richtlinie erteilen.

Auflösung

Erstellen Sie eine IAM-Richtlinie, um den Zugriff auf eine bestimmte IAM-Rollensitzung mithilfe des globalen Kontext-Schlüssels aws:userid von AWS zu ermöglichen.

Hinweis: Wenn Sie beim Ausführen von AWS-Command-Line-Interface-Befehlen (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Der globale Bedingungsschlüssel aws:userid prüft, ob die eindeutige ID des Auftraggebers, der die Anforderung stellt, mit der in der IAM-Richtlinie angegebenen eindeutigen ID übereinstimmt.

Wenn Sie beispielsweise zulassen möchten, dass eine bestimmte IAM-Rollensitzung nur bestimmte Amazon-Elastic-Compute-Cloud-Aktionen (Amazon EC2) in Ihrem AWS-Konto ausführt. Erstellen Sie eine IAM-Richtlinie ähnlich der folgenden:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowASpecificRoleSession",
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:userid": "AROAXXXXXXXXXXXXXXXXX:<role-session-name>"
                }
            }
        }
    ]
}

Diese IAM-Richtlinie gewährt der Amazon-EC2-Instance Zugriff auf die IAM-Rollensitzung im globalen Bedingungsschlüssel aws:userid. Andere Rollensitzungen können keine Amazon-EC2-Aktionen ausführen.

Um die Rollen-ID für die IAM-Rolle abzurufen, führen Sie den folgenden AWS-CLI-Befehl aus:

$ aws iam get-role --role-name <rolename>

Sie erhalten eine Ausgabe ähnlich der folgenden:

{
    "Role": {
        "Description": "Test Role",
        "AssumeRolePolicyDocument":"<URL-encoded-JSON>",
        "MaxSessionDuration": 3600,
        "RoleId": "AROA1234567890EXAMPLE",
        "CreateDate": "2019-11-13T16:45:56Z",
        "RoleName": "Test-Role",
        "Path": "/",
        "RoleLastUsed": {
            "Region": "us-east-1",
            "LastUsedDate": "2019-11-13T17:14:00Z"
        },
        "Arn": "arn:aws:iam::123456789012:role/Test-Role"
    }
}

Prüfen Sie in der Ausgabe die RoleID-Zeichenfolge. Die Rollen-ID wird in der identitätsbasierten Richtlinie verwendet, um den Zugriff von Amazon-EC2-Instances auf die IAM-Rollensitzung einzugrenzen.

Hinweis: Der globale Bedingungsschlüssel aws:userid kann in jeder Art von IAM-Richtlinie verwendet werden, z. B. in einer identitätsbasierten Richtlinie, einer ressourcenbasierten Richtlinie, einer Richtlinie für Berechtigungsgrenzen usw. Die Werte für den globalen Bedingungsschlüssel aws:userid hängen davon ab, welcher Prinzipaltyp die Anforderung initiiert. Informationen zum Ermitteln der Werte für verschiedene Typen von Hauptbenutzern finden Sie unter Informationen, die in allen Anforderungen verfügbar sind.