AWS: Ermöglicht es MFA-authentifizierten IAM-Benutzern, ihr eigenen Anmeldeinformationen auf der Seite „Meine Sicherheitsanmeldeinformationen“ zu verwalten - AWS Identity and Access Management

AWS: Ermöglicht es MFA-authentifizierten IAM-Benutzern, ihr eigenen Anmeldeinformationen auf der Seite „Meine Sicherheitsanmeldeinformationen“ zu verwalten

Dieses Beispiel zeigt, wie Sie eine Richtlinien erstellen könnten, die ermöglicht es IAM-Benutzern, die mit Multifaktor-Authentifizierung (MFA) authentifiziert werden, ihre eigenen Anmeldeinformationen auf der Seite My Security Credentials (Meine Sicherheitsanmeldeinformationen) zu verwalten. Diese Seite der AWS Management Console zeigt Kontoinformationen wie z. B. die Konto-ID und die kanonische Benutzer-ID an. Benutzer können auch ihre eigenen Passwörter, Zugriffsschlüssel, MFA-Geräte, X.509-Zertifikate und SSH-Schlüssel und Git-Anmeldeinformationen anzeigen und bearbeiten. Diese Beispielrichtlinie enthält die erforderlichen Berechtigungen zum Anzeigen und Bearbeiten aller Informationen auf der Seite. Sie erfordert auch Einrichtung und Authentifizierung des Benutzers mit MFA, bevor er andere Operationen in AWS ausführen kann. Informationen darüber, wie Benutzern die Verwaltung ihrer eigenen Anmeldeinformationen ohne MFA ermöglicht wird, finden Sie unter AWS: Ermöglicht es IAM-Benutzern, ihre eigenen Anmeldeinformationen auf der Seite „Meine Sicherheitsanmeldeinformationen“ zu verwalten..

Weitere Informationen dazu, wie Benutzer auf die Seite My Security Credentials (Meine Sicherheitsanmeldeinformationen) zugreifen können, finden Sie unter Wie IAM-Benutzer ihr eigenes Passwort ändern können (Konsole).

Anmerkung

Diese Beispielrichtlinie erlaubt es Benutzern nicht, ein Passwort beim Anmelden zurückzusetzen. Neue Benutzer und Benutzer mit einem abgelaufenen Passwort könnten dies versuchen. Sie können dies erlauben, indem Sie iam:ChangePassword und iam:GetAccountPasswordPolicy der Anweisung DenyAllExceptListedIfNoMFA hinzufügen. Allerdings wird dies von IAM nicht empfohlen. Benutzern eine Änderung ihres Passworts ohne MFA zu erlauben, kann ein Sicherheitsrisiko darstellen.

Was macht diese Richtlinie?

  • Die AllowViewAccountInfo-Anweisung ermöglicht es dem Benutzer, Informationen auf Kontoebene anzuzeigen. Diese Berechtigungen müssen in ihrer eigenen Anweisung vorliegen, da sie keine Ressourcen-ARN unterstützen oder keine angeben müssen. Geben Sie anstelle von Berechtigungen "Resource" : "*" ein. Diese Anweisung enthält die folgenden Aktionen, mit denen der Benutzer spezifische Informationen anzeigen kann:

    • GetAccountSummary – Zeigt die Konto-ID und die kanonische Benutzer-ID des Kontos an.

    • GetAccountPasswordPolicy – Zeigt die Passwortanforderungen des Kontos beim Ändern seines eigenen IAM-Benutzer-Passworts an.

    • ListVirtualMFADevices – Zeigt Details über ein virtuelles MFA-Gerät an, das für den Benutzer aktiviert ist.

  • Mit der AllowManageOwnPasswords-Anweisung kann der Benutzer sein eigenes Passwort ändern. Diese Anweisung enthält auch die GetUser-Aktion, die erforderlich ist, um die meisten Informationen auf der Seite My Security Credentials (Meine Sicherheitsanmeldeinformationen) anzuzeigen.

  • Die AllowManageOwnAccessKeys-Anweisung ermöglicht dem Benutzer das Erstellen, Aktualisieren und Löschen seiner eigenen Zugriffsschlüssel.

  • Die AllowManageOwnSigningCertificates-Anweisung ermöglicht dem Benutzer das Hochladen, Aktualisieren und Löschen seiner eigenen Signaturzertifikate.

  • Die AllowManageOwnSSHPublicKeys-Anweisung ermöglicht dem Benutzer das Hochladen, Aktualisieren und Löschen seiner eigenen öffentlichen SSH-Schlüssel für CodeCommit.

  • Die AllowManageOwnGitCredentials-Anweisung ermöglicht dem Benutzer das Erstellen, Aktualisieren und Löschen seiner eigenen Git-Anmeldeinformationen für CodeCommit.

  • Die AllowManageOwnVirtualMFADevice-Anweisung ermöglicht dem Benutzer das Erstellen und Löschen seines eigenen virtuellen MFA-Geräts. Der Ressourcen-ARN in dieser Anweisung gewährt nur Zugriff auf ein MFA-Gerät, das exakt denselben Namen wie der aktuell angemeldete Benutzer hat. Benutzer können nur ihr eigenes virtuelles MFA-Gerät erstellen oder löschen.

  • Die AllowManageOwnUserMFA-Anweisung ermöglicht es dem Benutzer, das virtuelle, U2F- oder physische MFA-Gerät für seinen eigenen Benutzer anzuzeigen oder zu verwalten. Der Ressourcen-ARN in dieser Anweisung gewährt nur Zugriff auf den eigenen IAM-Benutzer des Benutzers. Benutzer können das MFA-Gerät für andere Benutzer nicht anzeigen oder verwalten.

  • Die DenyAllExceptListedIfNoMFA-Anweisung verwehrt den Zugriff auf alle Aktionen in allen AWS-Services, außer einiger weniger aufgelisteter Aktionen, aber nur, wenn der Benutzer nicht mit MFA angemeldet ist. Die Anweisung verwendet eine Kombination aus "Deny" und "NotAction", um den Zugriff auf alle Aktionen, die nicht aufgeführt sind, explizit zu verwehren. Die aufgeführten Elemente werden durch diese Anweisung nicht verweigert oder zugelassen. Die Aktionen werden aber durch andere Anweisungen in der Richtlinie zugelassen. Weitere Informationen über die Logik für diese Anweisung finden Sie unter NotAction mit Deny. Hat sich der Benutzer mit MFA angemeldet, schlägt der Condition-Test fehl und diese Anweisung verwehrt keine Aktionen. In diesem Fall bestimmen andere Richtlinien oder Anweisungen für den Benutzer die Berechtigungen des Benutzers.

    Durch diese Anweisung wird sichergestellt, dass der Benutzer, wenn er nicht mit MFA angemeldet ist, nur die aufgeführten Aktionen ausführen kann. Außerdem kann er die aufgelisteten Aktionen nur ausführen, wenn eine andere Anweisung oder Richtlinie den Zugriff auf diese Aktionen gewährt. Dies ermöglicht es einem Benutzer nicht, beim Anmelden ein Passwort zu erstellen, da die iam:ChangePassword-Aktion nicht ohne MFA-Autorisierung erlaubt sein sollte.

    Die ...IfExists-Version des Bool -Operators stellt sicher, dass bei fehlendem aws:MultiFactorAuthPresent-Schlüssel die Bedingung den Wert "True" zurückgibt. Dies bedeutet, dass einem Benutzer, der mit langfristigen Anmeldeinformationen auf eine API zugreift, wie z. B. einem Zugriffsschlüssel, der Zugriff auf die Nicht-IAM-API-Operationen verweigert wird.

Diese Richtlinie ermöglicht es Benutzern nicht, die Seite Users (Benutzer) in der IAM-Konsole anzuzeigen oder diese Seite für den Zugriff auf ihre eigenen Benutzerinformationen zu verwenden. Um dies zuzulassen, fügen Sie die Aktion iam:ListUsers der Anweisung AllowViewAccountInfo und der Anweisung DenyAllExceptListedIfNoMFA hinzu. Darüber hinaus ermöglicht sie Benutzern nicht, ihr Passwort auf ihrer eigenen Benutzerseite anzupassen. Um dies zu ermöglichen, fügen Sie die Aktionen iam:CreateLoginProfile, iam:DeleteLoginProfile, iam:GetLoginProfile und iam:UpdateLoginProfile zur Anweisung AllowManageOwnPasswords hinzu. Um es einem Benutzer auch zu ermöglichen, sein Passwort über seine eigene Benutzerseite zu ändern, ohne sich mit MFA anzumelden, fügen Sie die Aktion iam:CreateLoginProfile zur Anweisung DenyAllExceptListedIfNoMFA hinzu.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "iam:GetAccountSummary", "iam:ListVirtualMFADevices" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswords", "Effect": "Allow", "Action": [ "iam:ChangePassword", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnAccessKeys", "Effect": "Allow", "Action": [ "iam:CreateAccessKey", "iam:DeleteAccessKey", "iam:ListAccessKeys", "iam:UpdateAccessKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnSigningCertificates", "Effect": "Allow", "Action": [ "iam:DeleteSigningCertificate", "iam:ListSigningCertificates", "iam:UpdateSigningCertificate", "iam:UploadSigningCertificate" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnSSHPublicKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnGitCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ListServiceSpecificCredentials", "iam:ResetServiceSpecificCredential", "iam:UpdateServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice", "iam:DeleteVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/${aws:username}" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }