

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 Benutzer IDs in IAM-Richtlinien für Zugriffskontrolle und Automatisierung
<a name="use-user-ids-iam-policies-access-control-automation"></a>

*Srinivas Ananda Babu und Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="use-user-ids-iam-policies-access-control-automation-summary"></a>

Dieses Muster erklärt die potenziellen Fallstricke bei der Verwendung von benutzernamenbasierten Richtlinien in AWS Identity and Access Management (IAM), die Vorteile der Verwendung von Benutzern und die Integration dieses Ansatzes in die Automatisierung. IDs AWS CloudFormation 

In der hilft Ihnen der IAM-Dienst dabei AWS Cloud, Benutzeridentitäten und Zugriffskontrolle präzise zu verwalten. Wenn Sie sich bei der Erstellung von IAM-Richtlinien auf Benutzernamen verlassen, kann dies jedoch zu unvorhergesehenen Sicherheitsrisiken und Problemen mit der Zugriffskontrolle führen. Stellen Sie sich zum Beispiel dieses Szenario vor: Ein neuer Mitarbeiter, John Doe, tritt Ihrem Team bei, und Sie erstellen ein IAM-Benutzerkonto mit dem Benutzernamen, der ihm über IAM-Richtlinien`j.doe`, die auf Benutzernamen verweisen, Berechtigungen gewährt. Wenn John das Unternehmen verlässt, wird das Konto gelöscht. Das Problem beginnt, wenn eine neue Mitarbeiterin, Jane Doe, Ihrem Team beitritt und der `j.doe` Benutzername neu erstellt wird. Die bestehenden Richtlinien gewähren Jane Doe jetzt dieselben Berechtigungen wie John Doe. Dies führt zu einem potenziellen Sicherheits- und Compliance-Albtraum.

Die manuelle Aktualisierung jeder Richtlinie, um neue Benutzerdaten zu berücksichtigen, ist ein zeitaufwändiger und fehleranfälliger Prozess, insbesondere wenn Ihr Unternehmen wächst. Die Lösung besteht darin, eine eindeutige und unveränderliche Benutzer-ID zu verwenden. Wenn Sie ein IAM-Benutzerkonto erstellen, AWS weist Sie dem IAM-Benutzer eine eindeutige Benutzer-ID (oder Prinzipal-ID) zu. Sie können diese Benutzer IDs in Ihren IAM-Richtlinien verwenden, um eine konsistente und zuverlässige Zugriffskontrolle zu gewährleisten, die nicht durch Änderungen oder Wiederverwendung von Benutzernamen beeinträchtigt wird.

Eine IAM-Richtlinie, die eine Benutzer-ID verwendet, könnte beispielsweise so aussehen:

```
{ 
    "Version": "2012-10-17",		 	 	  
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": "s3:ListBucket", 
            "Resource": "arn:aws:s3:::example-bucket", 
            "Principal": { "AWS": "arn:aws:iam::123456789012:user/abcdef01234567890" } 
        } 
      ] 
}
```

Die Verwendung von Usern IDs in IAM-Richtlinien bietet unter anderem folgende Vorteile:
+ **Einzigartigkeit.** Benutzer IDs sind in allen AWS-Konten Bereichen einzigartig und bieten daher eine korrekte und konsistente Berechtigungsanwendung.
+ **Unveränderlichkeit.** Der Benutzer IDs kann nicht geändert werden, daher bieten sie eine stabile Kennung für die Referenzierung von Benutzern in Richtlinien.
+ **Prüfung und Einhaltung der Vorschriften.** AWS-Services nehmen häufig Benutzer IDs in Logs und Audit-Trails auf, sodass Aktionen leicht auf bestimmte Benutzer zurückgeführt werden können.
+ **Automatisierung und Integration.** Durch die Verwendung von IDs AWS APIs SDKs Benutzerprogrammierungsskripten oder Automatisierungsskripten wird sichergestellt, dass Prozesse von Benutzernamenänderungen nicht beeinträchtigt werden.
+ **Zukunftssicherheit.** Durch die Verwendung von IDs Benutzerrichtlinien von Anfang an können potenzielle Probleme mit der Zugriffskontrolle oder umfangreiche Richtlinienaktualisierungen vermieden werden.

**Automation**

Wenn Sie IaC-Tools (Infrastructure as Code) verwenden AWS CloudFormation, können die Fallstricke benutzernamenbasierter IAM-Richtlinien immer noch zu Problemen führen. Die IAM-Benutzerressource gibt den Benutzernamen zurück, wenn Sie die systeminterne Funktion aufrufen. `Ref` Im Zuge der Weiterentwicklung der Infrastruktur Ihres Unternehmens kann der Zyklus des Erstellens und Löschens von Ressourcen, einschließlich IAM-Benutzerkonten, zu unbeabsichtigten Problemen bei der Zugriffskontrolle führen, wenn Sie Benutzernamen wiederverwenden.

Um dieses Problem zu beheben, empfehlen wir Ihnen, Benutzer IDs in Ihre Vorlagen zu integrieren. CloudFormation Es kann jedoch schwierig sein, Benutzer IDs für diesen Zweck zu finden. Hier können benutzerdefinierte Ressourcen hilfreich sein. Sie können CloudFormation benutzerdefinierte Ressourcen verwenden, um die Funktionalität des Dienstes zu erweitern, indem Sie ihn mit AWS APIs oder mit externen Diensten integrieren. Indem Sie eine benutzerdefinierte Ressource erstellen, die die Benutzer-ID für einen bestimmten IAM-Benutzer abruft, können Sie die Benutzer-ID in Ihren CloudFormation Vorlagen verfügbar machen. Dieser Ansatz rationalisiert den Prozess der Benutzerreferenzierung IDs und stellt sicher, dass Ihre Automatisierungsworkflows robust und zukunftssicher bleiben.

## Voraussetzungen und Einschränkungen
<a name="use-user-ids-iam-policies-access-control-automation-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine IAM-Rolle für einen Cloud-Administrator zum Ausführen der Vorlage CloudFormation 

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="use-user-ids-iam-policies-access-control-automation-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt, wie eine benutzerdefinierte Ressource, unterstützt von, CloudFormation verwendet wird AWS Lambda , um die IAM-Benutzer-ID abzurufen.

![\[Abrufen der IAM-Benutzer-ID mithilfe einer CloudFormation benutzerdefinierten Ressource.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/71698647-274e-4911-92f0-549e444b53f6/images/7e507df4-f597-499e-bd5b-6d7a55e64146.png)


**Automatisierung und Skalierung**

Sie können die CloudFormation Vorlage mehrfach für verschiedene AWS-Regionen Konten verwenden. Sie müssen sie in jeder Region oder jedem Konto nur einmal ausführen.

## Tools
<a name="use-user-ids-iam-policies-access-control-automation-tools"></a>

**AWS-Services**
+ [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) ist ein Webservice, mit dem Sie den Zugriff AWS auf Ressourcen sicher kontrollieren können. Sie verwenden IAM, um zu steuern, wer authentifiziert (angemeldet) und autorisiert (Berechtigungen besitzt) ist, Ressourcen zu nutzen.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)— AWS CloudFormation unterstützt Sie bei der Modellierung und Einrichtung Ihrer AWS Ressourcen, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können, auf denen sie ausgeführt werden. AWS Sie erstellen eine Vorlage, die die AWS Ressourcen beschreibt, die Sie benötigen, und CloudFormation kümmert sich um die Bereitstellung und Konfiguration dieser Ressourcen für Sie.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)— AWS Lambda ist ein Rechendienst, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. 

## Best Practices
<a name="use-user-ids-iam-policies-access-control-automation-best-practices"></a>

Wenn Sie bei Null anfangen oder eine Implementierung auf der grünen Wiese planen, empfehlen wir Ihnen dringend, eine zentralisierte [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)Benutzerverwaltung zu verwenden. IAM Identity Center lässt sich in Ihre vorhandenen Identitätsanbieter (wie Active Directory oder Okta) integrieren, um Benutzeridentitäten zu bündeln AWS, sodass Sie IAM-Benutzer nicht mehr direkt erstellen und verwalten müssen. Dieser Ansatz gewährleistet nicht nur eine konsistente Zugriffskontrolle, sondern vereinfacht auch die Verwaltung des Benutzerlebenszyklus und trägt zur Verbesserung von Sicherheit und Compliance in Ihrer gesamten Umgebung bei. AWS 

## Epen
<a name="use-user-ids-iam-policies-access-control-automation-epics"></a>

### Bestätigen Sie die Berechtigungen
<a name="validate-permissions"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie Ihre AWS-Konto und Ihre IAM-Rolle. | Vergewissern Sie sich, dass Sie über eine IAM-Rolle mit Berechtigungen zum Bereitstellen von CloudFormation Vorlagen in Ihrem verfügen. AWS-KontoWenn Sie planen, die Vorlage im letzten Schritt dieses Verfahrens AWS CLI anstelle der CloudFormation Konsole bereitzustellen, sollten Sie auch temporäre Anmeldeinformationen für die Ausführung von AWS CLI Befehlen einrichten. Anweisungen finden Sie in der [IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli). | Cloud-Architekt | 

### Erstellen Sie eine CloudFormation Vorlage
<a name="build-a-cfnshort-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine CloudFormation Vorlage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html) | AWS DevOps, Cloud-Architekt | 
| Fügen Sie einen Eingabeparameter für den Benutzernamen hinzu. | Fügen Sie dem `Parameters` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>Parameters:<br />  NewIamUserName:<br />    Type: String<br />    Description: Unique username for the new IAM user<br /></pre>Dieser Parameter fordert den Benutzer zur Eingabe des Benutzernamens auf. | AWS DevOps, Cloud-Architekt | 
| Fügen Sie eine benutzerdefinierte Ressource hinzu, um einen IAM-Benutzer zu erstellen. | Fügen Sie dem `Resources` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>Resources:<br />  rNewIamUser:<br />    Type: 'AWS::IAM::User'<br />    Properties:<br />      UserName: !Ref NewIamUserName<br /></pre>Dieser Code fügt eine CloudFormation Ressource hinzu, die einen IAM-Benutzer mit dem durch den `NewIamUserName` Parameter angegebenen Namen erstellt. | AWS DevOps, Cloud-Architekt | 
| Fügen Sie eine Ausführungsrolle für die Lambda-Funktion hinzu. | In diesem Schritt erstellen Sie eine IAM-Rolle, die einer AWS Lambda Funktion die Berechtigung zum Abrufen des IAM erteilt. `UserId` Geben Sie die folgenden Mindestberechtigungen an, die für die Ausführung von Lambda erforderlich sind:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html)Anweisungen zum Erstellen einer Ausführungsrolle finden Sie in der [Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Sie werden im nächsten Schritt, wenn Sie die Lambda-Funktion erstellen, auf diese Rolle verweisen. | AWS-Administrator, Cloud-Architekt | 
| Fügen Sie eine Lambda-Funktion hinzu, um das eindeutige `UserId` IAM zu erhalten. | In diesem Schritt definieren Sie eine Lambda-Funktion mit einer Python-Laufzeit, um das eindeutige `UserId` IAM zu erhalten. Fügen Sie dazu dem `Resources` Abschnitt der Vorlage den folgenden Code hinzu. CloudFormation `<<ROLENAME>>`Ersetzen Sie ihn durch den Namen der Ausführungsrolle, die Sie im letzten Schritt erstellt haben.<pre>  GetUserLambdaFunction:<br />    Type: 'AWS::Lambda::Function'<br />    Properties:<br />      Handler: index.handler<br />      Role: <<ROLENAME>><br />      Timeout: 30<br />      Runtime: python3.11<br />      Code:<br />        ZipFile: |<br />          import cfnresponse, boto3<br />          def handler(event, context):<br />            try:<br />              print(event)<br />              user = boto3.client('iam').get_user(UserName=event['ResourceProperties']['NewIamUserName'])['User']<br />              cfnresponse.send(event, context, cfnresponse.SUCCESS, {'NewIamUserId': user['UserId'], 'NewIamUserPath': user['Path'], 'NewIamUserArn': user['Arn']})<br />            except Exception as e:<br />              cfnresponse.send(event, context, cfnresponse.FAILED, {'NewIamUser': str(e)})<br /></pre> | AWS DevOps, Cloud-Architekt | 
| Fügen Sie eine benutzerdefinierte Ressource hinzu. | Fügen Sie dem `Resources` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>  rCustomGetUniqueUserId:<br />    Type: 'Custom::rCustomGetUniqueUserIdWithLambda'<br />    Properties:<br />      ServiceToken: !GetAtt GetUserLambdaFunction.Arn<br />      NewIamUserName: !Ref NewIamUserName<br /></pre>Diese benutzerdefinierte Ressource ruft die Lambda-Funktion auf, um das `UserID` IAM abzurufen. | AWS DevOps, Cloud-Architekt | 
| Definieren Sie CloudFormation Ausgaben. | Fügen Sie dem `Outputs` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>Outputs:<br />  NewIamUserId:<br />    Value: !GetAtt rCustomGetUniqueUserId.NewIamUserId<br /></pre>Dadurch wird das IAM `UserID` für den neuen IAM-Benutzer angezeigt. | AWS DevOps, Cloud-Architekt | 
| Speichern Sie die Vorlage. | Speichern Sie Ihre Änderungen an der CloudFormation Vorlage. | AWS DevOps, Cloud-Architekt | 

### Stellen Sie die CloudFormation Vorlage bereit
<a name="deploy-the-cfnshort-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die CloudFormation Vorlage bereit. | Folgen Sie den Anweisungen in der [CloudFormation Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html), um die `get_unique_user_id.yaml` Vorlage mithilfe der CloudFormation Konsole bereitzustellen.Alternativ können Sie den folgenden AWS CLI Befehl ausführen, um die Vorlage bereitzustellen:<pre>aws cloudformation create-stack \<br />--stack-name DemoNewUser \<br />--template-body file://get_unique_user_id.yaml \<br />--parameters ParameterKey=NewIamUserName,ParameterValue=demouser \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps, Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="use-user-ids-iam-policies-access-control-automation-resources"></a>
+ [Erstellen Sie einen Stack von der CloudFormation Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) aus (CloudFormation Dokumentation)
+ [Lambda-gestützte benutzerdefinierte Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html) (Dokumentation) CloudFormation 
+ [Eindeutige Identifikatoren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) (IAM-Dokumentation)
+ [Verwenden Sie temporäre Anmeldeinformationen mit AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) (IAM-Dokumentation)