

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.

# Implementieren Sie die SaaS-Mandantenisolierung für Amazon S3 mithilfe eines AWS Lambda Token-Verkaufsautomaten
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine"></a>

*Tabby Ward, Thomas Davis und Sravan Periyathambi, Amazon Web Services*

## Zusammenfassung
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-summary"></a>

Mehrmandantenfähige SaaS-Anwendungen müssen Systeme implementieren, um sicherzustellen, dass die Mandantenisolierung aufrechterhalten wird. Wenn Sie Mandantendaten auf derselben AWS Ressource speichern, z. B. wenn mehrere Mandanten Daten in demselben Amazon Simple Storage Service (Amazon S3) -Bucket speichern, müssen Sie sicherstellen, dass kein mandantenübergreifender Zugriff möglich ist. Token-Verkaufsautomaten (TVMs) sind eine Möglichkeit, die Daten von Mietern zu isolieren. Diese Maschinen bieten einen Mechanismus zum Abrufen von Token und abstrahieren gleichzeitig die Komplexität der Token-Generierung. Entwickler können ein TVM verwenden, ohne detaillierte Kenntnisse darüber zu haben, wie es Token produziert.

Dieses Muster implementiert ein TVM mithilfe von. AWS Lambda Das TVM generiert ein Token, das aus temporären STS-Anmeldeinformationen (Security Token Service) besteht, die den Zugriff auf die Daten eines einzelnen SaaS-Mandanten in einem S3-Bucket einschränken.

TVMs, und der Code, der mit diesem Muster bereitgestellt wird, werden in der Regel mit Ansprüchen verwendet, die von JSON-Web-Tokens (JWTs) abgeleitet sind, um Anfragen nach AWS Ressourcen mit einer AWS Identity and Access Management mandantenbezogenen Richtlinie (IAM) zu verknüpfen. Sie können den Code in diesem Muster als Grundlage für die Implementierung einer SaaS-Anwendung verwenden, die temporäre STS-Anmeldeinformationen mit Gültigkeitsbereich auf der Grundlage der in einem JWT-Token bereitgestellten Ansprüche generiert.

## Voraussetzungen und Einschränkungen
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ AWS Command Line Interface (AWS CLI) [Version 1.19.0 oder höher](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html), installiert und konfiguriert auf macOS, Linux oder Windows. Alternativ können Sie AWS CLI [Version 2.1 oder höher](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) verwenden.

**Einschränkungen**
+ Dieser Code läuft in Java und unterstützt derzeit keine anderen Programmiersprachen. 
+ Die Beispielanwendung bietet keine AWS regionsübergreifende Unterstützung oder Unterstützung für Disaster Recovery (DR). 
+ Dieses Muster zeigt, wie ein Lambda-TVM für eine SaaS-Anwendung begrenzten Mandantenzugriff bereitstellen kann. Dieses Muster ist nicht für die Verwendung in Produktionsumgebungen ohne zusätzliche Sicherheitstests als Teil Ihrer spezifischen Anwendung oder Ihres Anwendungsfalls vorgesehen.

## Architektur
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Lambda
+ Amazon S3
+ IAM
+ AWS -Security-Token-Service (AWS STS)

**Zielarchitektur**

![\[Generieren eines Tokens, um temporäre STS-Anmeldeinformationen für den Zugriff auf Daten in einem S3-Bucket zu erhalten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/97a34c8e-d04e-40b6-acbf-1baa176d22a9/images/14d0508a-703b-4229-85e6-c5094de7fe01.png)


 

## Tools
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS -Security-Token-Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) hilft Ihnen dabei, temporäre Anmeldeinformationen mit eingeschränkten Rechten für Benutzer anzufordern.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Code**

Der Quellcode für dieses Muster ist als Anlage verfügbar und umfasst die folgenden Dateien:
+ `s3UploadSample.jar`stellt den Quellcode für eine Lambda-Funktion bereit, die ein JSON-Dokument in einen S3-Bucket hochlädt.
+ `tvm-layer.zip`stellt eine wiederverwendbare Java-Bibliothek bereit, die ein Token (temporäre STS-Anmeldeinformationen) für die Lambda-Funktion bereitstellt, um auf den S3-Bucket zuzugreifen und das JSON-Dokument hochzuladen.
+ `token-vending-machine-sample-app.zip`stellt den Quellcode bereit, der zur Erstellung dieser Artefakte und Kompilierungsanweisungen verwendet wurde.

Folgen Sie den Anweisungen im nächsten Abschnitt, um diese Dateien zu verwenden.

## Epen
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-epics"></a>

### Ermitteln Sie Variablenwerte
<a name="determine-variable-values"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ermitteln Sie Variablenwerte. | Die Implementierung dieses Musters umfasst mehrere Variablennamen, die konsistent verwendet werden müssen. Ermitteln Sie die Werte, die für jede Variable verwendet werden sollen, und geben Sie diesen Wert an, wenn Sie in den nachfolgenden Schritten dazu aufgefordert werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine.html) | Cloud-Administrator | 

### Erstellen eines S3-Buckets
<a name="create-an-s3-bucket"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket für die Beispielanwendung. | Verwenden Sie den folgenden AWS CLI Befehl, um einen S3-Bucket zu erstellen. Geben Sie den `<sample-app-bucket-name>`**** Wert im Codeausschnitt an:<pre>aws s3api create-bucket --bucket <sample-app-bucket-name></pre>Die Lambda-Beispielanwendung lädt JSON-Dateien in diesen Bucket hoch. | Cloud-Administrator | 

### Erstellen Sie die IAM-TVM-Rolle und -Richtlinie
<a name="create-the-iam-tvm-role-and-policy"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine TVM-Rolle. | Verwenden Sie einen der folgenden AWS CLI Befehle, um eine IAM-Rolle zu erstellen. Geben Sie den `<sample-tvm-role-name>`**** Wert im Befehl ein.Für macOS- oder Linux-Shells:<pre>aws iam create-role \<br />--role-name <sample-tvm-role-name> \<br />--assume-role-policy-document '{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "sts:AssumeRole"<br />            ],<br />            "Principal": {<br />                "Service": [<br />                    "lambda.amazonaws.com"<br />                ]<br />            },<br />            "Condition": {<br />                "StringEquals": {<br />                    "aws:SourceAccount": "<AWS Account ID>"<br />                }<br />            }<br />        }<br />    ]<br />}'</pre>Für die Windows-Befehlszeile:<pre>aws iam create-role ^<br />--role-name <sample-tvm-role-name> ^<br />--assume-role-policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"sts:AssumeRole\"], \"Principal\": {\"Service\": [\"lambda.amazonaws.com\"]}, \"Condition\": {\"StringEquals\": {\"aws:SourceAccount\": \"<AWS Account ID>\"}}}]}"</pre>Die Lambda-Beispielanwendung übernimmt diese Rolle, wenn die Anwendung aufgerufen wird. Durch die Möglichkeit, die Anwendungsrolle mit einer bereichsbezogenen Richtlinie zu übernehmen, erhält der Code umfassendere Zugriffsberechtigungen auf den S3-Bucket. | Cloud-Administrator | 
| Erstellen Sie eine Inline-TVM-Rollenrichtlinie. | Verwenden Sie einen der folgenden AWS CLI Befehle, um eine IAM-Richtlinie zu erstellen. Geben Sie die `<sample-app-role-name>` Werte `<sample-tvm-role-name>` **`<AWS Account ID>`**, und im Befehl ein.Für macOS- oder Linux-Shells:<pre>aws iam put-role-policy \<br />--role-name <sample-tvm-role-name> \<br />--policy-name assume-app-role \<br />--policy-document '{<br />    "Version": "2012-10-17",		 	 	  <br />    "Statement": [<br />        {<br />            "Effect": "Allow", <br />            "Action": "sts:AssumeRole", <br />            "Resource": "arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>"<br />        }<br />    ]}'</pre>Für die Windows-Befehlszeile:<pre>aws iam put-role-policy ^<br />--role-name <sample-tvm-role-name> ^<br />--policy-name assume-app-role ^<br />--policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": \"sts:AssumeRole\", \"Resource\": \"arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>\"}]}"</pre>Diese Richtlinie ist der TVM-Rolle zugeordnet. Sie gibt dem Code die Möglichkeit, die Anwendungsrolle zu übernehmen, die über umfassendere Berechtigungen für den Zugriff auf den S3-Bucket verfügt. | Cloud-Administrator | 
| Hängen Sie die verwaltete Lambda-Richtlinie an. | Verwenden Sie den folgenden AWS CLI Befehl, um die `AWSLambdaBasicExecutionRole` IAM-Richtlinie anzuhängen. Geben Sie den `<sample-tvm-role-name>` Wert im Befehl ein:<pre>aws iam attach-role-policy \<br />--role-name <sample-tvm-role-name> \<br />--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole</pre>Für die Windows-Befehlszeile:<pre>aws iam attach-role-policy ^<br />--role-name <sample-tvm-role-name> ^<br />--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole</pre>Diese verwaltete Richtlinie ist der TVM-Rolle zugeordnet, damit Lambda Protokolle an Amazon senden kann. CloudWatch | Cloud-Administrator | 

### Erstellen Sie die IAM-Anwendungsrolle und -Richtlinie
<a name="create-the-iam-application-role-and-policy"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Anwendungsrolle. | Verwenden Sie einen der folgenden AWS CLI Befehle, um eine IAM-Rolle zu erstellen. Geben Sie die `<sample-tvm-role-name>` Werte `<sample-app-role-name>``<AWS Account ID>`, und im Befehl ein.Für macOS- oder Linux-Shells:<pre>aws iam create-role \<br />--role-name <sample-app-role-name> \<br />--assume-role-policy-document '{<br />    "Version": "2012-10-17",		 	 	  <br />    "Statement": [<br />        {<br />            "Effect": <br />            "Allow",<br />            "Principal": {<br />                "AWS": "arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name>"<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]}'</pre>Für die Windows-Befehlszeile:<pre>aws iam create-role ^<br />--role-name <sample-app-role-name> ^<br />--assume-role-policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\",\"Principal\": {\"AWS\": \"arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name>\"},\"Action\": \"sts:AssumeRole\"}]}"</pre>Die Lambda-Beispielanwendung übernimmt diese Rolle mit einer bereichsbezogenen Richtlinie, um mandantenbasierten Zugriff auf einen S3-Bucket zu erhalten. | Cloud-Administrator | 
| Erstellen Sie eine Inline-Rollenrichtlinie für Anwendungen. | Verwenden Sie einen der folgenden AWS CLI Befehle, um eine IAM-Richtlinie zu erstellen. Geben Sie die `<sample-app-bucket-name>`**** Werte `<sample-app-role-name>` und im Befehl ein.Für macOS- oder Linux-Shells:<pre>aws iam put-role-policy \<br />--role-name <sample-app-role-name> \<br />--policy-name s3-bucket-access \<br />--policy-document '{<br />    "Version": "2012-10-17",		 	 	  <br />    "Statement": [<br />        {<br />            "Effect": "Allow", <br />            "Action": [<br />                "s3:PutObject", <br />                "s3:GetObject", <br />                "s3:DeleteObject"<br />            ], <br />            "Resource": "arn:aws:s3:::<sample-app-bucket-name>/*"<br />        }, <br />        {<br />            "Effect": "Allow", <br />            "Action": ["s3:ListBucket"], <br />            "Resource": "arn:aws:s3:::<sample-app-bucket-name>"<br />        }<br />    ]}'</pre>Für die Windows-Befehlszeile:<pre>aws iam put-role-policy ^<br />--role-name <sample-app-role-name> ^<br />--policy-name s3-bucket-access ^<br />--policy-document "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Effect\": \"Allow\", \"Action\": [\"s3:PutObject\", \"s3:GetObject\", \"s3:DeleteObject\"], \"Resource\": \"arn:aws:s3:::<sample-app-bucket-name>/*\"}, {\"Effect\": \"Allow\", \"Action\": [\"s3:ListBucket\"], \"Resource\": \"arn:aws:s3:::<sample-app-bucket-name>\"}]}"</pre>Diese Richtlinie ist der Anwendungsrolle zugeordnet. Sie bietet umfassenden Zugriff auf Objekte im S3-Bucket. Wenn die Beispielanwendung die Rolle übernimmt, werden diese Berechtigungen anhand der dynamisch generierten Richtlinie des TVM auf einen bestimmten Mandanten beschränkt. | Cloud-Administrator | 

### Erstellen Sie die Lambda-Beispielanwendung mit TVM
<a name="create-the-lam-sample-application-with-tvm"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie die kompilierten Quelldateien herunter. | Laden Sie die `tvm-layer.zip`**** Dateien `s3UploadSample.jar` und herunter, die als Anlagen enthalten sind. Den Quellcode, der zur Erstellung dieser Artefakte verwendet wurde, sowie Anweisungen zur Kompilierung finden Sie unter. `token-vending-machine-sample-app.zip` | Cloud-Administrator | 
| Erstellen Sie die Lambda-Schicht. | Verwenden Sie den folgenden AWS CLI Befehl, um eine Lambda-Schicht zu erstellen, die das TVM für Lambda zugänglich macht. Wenn Sie diesen Befehl nicht von dem Speicherort aus ausführen, den Sie heruntergeladen haben` tvm-layer.zip`, geben Sie `tvm-layer.zip` im Parameter den richtigen Pfad zu an. `--zip-file` <pre>aws lambda publish-layer-version \<br />--layer-name sample-token-vending-machine \<br />--compatible-runtimes java11 \<br />--zip-file fileb://tvm-layer.zip</pre>Für die Windows-Befehlszeile:<pre>aws lambda publish-layer-version ^<br />--layer-name sample-token-vending-machine ^<br />--compatible-runtimes java11 ^<br />--zip-file fileb://tvm-layer.zip</pre>Dieser Befehl erstellt eine Lambda-Schicht, die die wiederverwendbare TVM-Bibliothek enthält. | Cloud-Administrator, App-Entwickler | 
| So erstellen Sie die Lambda-Funktion: | Verwenden Sie den folgenden AWS CLI Befehl, um eine Lambda-Funktion zu erstellen. Geben Sie die `<sample-app-role-name>` Werte `<sample-app-function-name>` `<AWS Account ID>``<AWS Region>`,`<sample-tvm-role-name>`,`<sample-app-bucket-name>`, und im Befehl ein. Wenn Sie diesen Befehl nicht von dem Speicherort aus ausführen, den Sie heruntergeladen haben`s3UploadSample.jar`, geben Sie `s3UploadSample.jar` im `--zip-file` Parameter den richtigen Pfad zu an. <pre>aws lambda create-function \<br />--function-name <sample-app-function-name>  \<br />--timeout 30 \<br />--memory-size 256 \<br />--runtime java11 \<br />--role arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name> \<br />--handler com.amazon.aws.s3UploadSample.App \<br />--zip-file fileb://s3UploadSample.jar \<br />--layers arn:aws:lambda:<AWS Region>:<AWS Account ID>:layer:sample-token-vending-machine:1 \<br />--environment "Variables={S3_BUCKET=<sample-app-bucket-name>,<br />ROLE=arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>}"</pre>Für die Windows-Befehlszeile:<pre>aws lambda create-function ^<br />--function-name <sample-app-function-name>  ^<br />--timeout 30 ^<br />--memory-size 256 ^<br />--runtime java11 ^<br />--role arn:aws:iam::<AWS Account ID>:role/<sample-tvm-role-name> ^<br />--handler com.amazon.aws.s3UploadSample.App ^<br />--zip-file fileb://s3UploadSample.jar ^<br />--layers arn:aws:lambda:<AWS Region>:<AWS Account ID>:layer:sample-token-vending-machine:1 ^<br />--environment "Variables={S3_BUCKET=<sample-app-bucket-name>,ROLE=arn:aws:iam::<AWS Account ID>:role/<sample-app-role-name>}"</pre>Dieser Befehl erstellt eine Lambda-Funktion mit dem Beispielanwendungscode und der angehängten TVM-Schicht. Außerdem werden zwei Umgebungsvariablen festgelegt: `S3_BUCKET` und. `ROLE` Die Beispielanwendung verwendet diese Variablen, um die zu übernehmende Rolle und den S3-Bucket zu bestimmen, in den JSON-Dokumente hochgeladen werden sollen. | Cloud-Administrator, App-Entwickler | 

### Testen Sie die Beispielanwendung und TVM
<a name="test-the-sample-application-and-tvm"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie die Lambda-Beispielanwendung auf. | Verwenden Sie einen der folgenden AWS CLI Befehle, um die Lambda-Beispielanwendung mit der erwarteten Nutzlast zu starten. Geben Sie die `<sample-tenant-name>` Werte `<sample-app-function-name>` und im Befehl ein.Für macOS- und Linux-Shells:<pre>aws lambda invoke \<br />--function <sample-app-function-name> \<br />--invocation-type RequestResponse \<br />--payload '{"tenant": "<sample-tenant-name>"}' \<br />--cli-binary-format raw-in-base64-out response.json</pre>Für die Windows-Befehlszeile:<pre>aws lambda invoke ^<br />--function <sample-app-function-name> ^<br />--invocation-type RequestResponse ^<br />--payload "{\"tenant\": \"<sample-tenant-name>\"}" ^<br />--cli-binary-format raw-in-base64-out response.json</pre>Dieser Befehl ruft die Lambda-Funktion auf und gibt das Ergebnis in einem `response.json` Dokument zurück. Auf vielen UNIX-basierten Systemen können Sie `response.json` zu ändern, `/dev/stdout` um die Ergebnisse direkt in Ihrer Shell auszugeben, ohne eine weitere Datei zu erstellen. Wenn Sie den `<sample-tenant-name>` Wert in nachfolgenden Aufrufen dieser Lambda-Funktion ändern, werden der Speicherort des JSON-Dokuments und die vom Token bereitgestellten Berechtigungen geändert. | Cloud-Administrator, App-Entwickler | 
| Sehen Sie sich den S3-Bucket an, um die erstellten Objekte zu sehen. | Navigieren Sie zu dem S3-Bucket (`<sample-app-bucket-name>`), den Sie zuvor erstellt haben. Dieser Bucket enthält ein S3-Objektpräfix mit dem Wert von`<sample-tenant-name>`. Unter diesem Präfix finden Sie ein JSON-Dokument, das mit einer UUID benannt ist. Wenn Sie die Beispielanwendung mehrmals aufrufen, werden weitere JSON-Dokumente hinzugefügt. | Cloud-Administrator | 
| Sehen Sie sich die Protokolle für die Beispielanwendung unter CloudWatch Logs an. | Zeigen Sie die Protokolle an, die der `<sample-app-function-name>` in CloudWatch Logs genannten Lambda-Funktion zugeordnet sind. Anweisungen finden Sie in der [Lambda-Dokumentation unter CloudWatch Lambda-Funktionsprotokolle an Logs senden](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html). In diesen Protokollen können Sie die vom TVM generierte Richtlinie für Mandanten einsehen. Diese mandantenbezogene Richtlinie erteilt Amazon S3,, und, und, Berechtigungen für die Beispielanwendung **PutObject**GetObject**DeleteObject******, jedoch nur für das Objektpräfix **ListBucket** APIs, das mit verknüpft ist. `<sample-tenant-name>` Wenn Sie bei nachfolgenden Aufrufen der Beispielanwendung eine Änderung vornehmen, aktualisiert der TVM die bereichsbezogene Richtlinie so`<sample-tenant-name>`, dass sie dem Mandanten entspricht, der in der Aufruf-Payload angegeben ist. Diese dynamisch generierte Richtlinie zeigt, wie der mandantenbezogene Zugriff mit einem TVM in SaaS-Anwendungen aufrechterhalten werden kann. Die TVM-Funktionalität wird in einer Lambda-Schicht bereitgestellt, sodass sie an andere Lambda-Funktionen angehängt werden kann, die von einer Anwendung verwendet werden, ohne dass der Code repliziert werden muss.[Eine Veranschaulichung der dynamisch generierten Richtlinie finden Sie im Abschnitt Zusätzliche Informationen.](#implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-additional) | Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-resources"></a>
+ [Isolieren von Mandanten mit dynamisch generierten IAM-Richtlinien](https://aws.amazon.com/blogs/apn/isolating-saas-tenants-with-dynamically-generated-iam-policies/) (Blogbeitrag)
+ [Anwendung dynamisch generierter Isolationsrichtlinien in SaaS-Umgebungen](https://aws.amazon.com/blogs/apn/applying-dynamically-generated-isolation-policies-in-saas-environments/) (Blogbeitrag)
+ [SaaS auf AWS](https://aws.amazon.com/saas/)

## Zusätzliche Informationen
<a name="implement-saas-tenant-isolation-for-amazon-s3-by-using-an-aws-lambda-token-vending-machine-additional"></a>

Das folgende Protokoll zeigt die dynamisch generierte Richtlinie, die durch den TVM-Code in diesem Muster erstellt wurde. In diesem Screenshot sind das „ist“ `DOC-EXAMPLE-BUCKET` und das `<sample-tenant-name>` „`<sample-app-bucket-name>`ist“ zu sehen. `test-tenant-1` Die von dieser bereichsbezogenen Richtlinie zurückgegebenen STS-Anmeldeinformationen können keine Aktionen für Objekte im S3-Bucket ausführen, mit Ausnahme von Objekten, die dem Objektschlüsselpräfix zugeordnet sind. `test-tenant-1`

![\[Protokoll mit einer dynamisch generierten Richtlinie, die durch den TVM-Code erstellt wurde.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/97a34c8e-d04e-40b6-acbf-1baa176d22a9/images/d4776ebe-fb8f-41ac-b8c5-b4f97a821c8c.png)


## Anlagen
<a name="attachments-97a34c8e-d04e-40b6-acbf-1baa176d22a9"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/97a34c8e-d04e-40b6-acbf-1baa176d22a9/attachments/attachment.zip)