DAXZugriffskontrolle - Amazon-DynamoDB

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.

DAXZugriffskontrolle

DynamoDB Accelerator (DAX) wurde für die Zusammenarbeit mit DynamoDB entwickelt, um Ihren Anwendungen nahtlos eine Caching-Ebene hinzuzufügen. DynamoDB DAX und DynamoDB verfügen jedoch über separate Zugriffskontrollmechanismen. Beide Dienste verwenden AWS Identity and Access Management (IAM), um ihre jeweiligen Sicherheitsrichtlinien zu implementieren, aber die Sicherheitsmodelle für DynamoDB DAX und DynamoDB sind unterschiedlich.

Es wird dringend empfohlen, dass Sie beide Sicherheitsmodelle verstehen, damit Sie die richtigen Sicherheitsmaßnahmen für Ihre Anwendungen implementieren können, die sie verwenden. DAX

In diesem Abschnitt werden die Zugriffskontrollmechanismen beschrieben, die von bereitgestellt werden, DAX und es werden IAM Beispielrichtlinien bereitgestellt, die Sie an Ihre Bedürfnisse anpassen können.

Mit DynamoDB können Sie IAM Richtlinien erstellen, die die Aktionen einschränken, die ein Benutzer für einzelne DynamoDB-Ressourcen ausführen kann. Sie können beispielsweise eine Benutzerrolle erstellen, die ausschließlich dem Benutzer erlaubt, schreibgeschützte Aktionen auf einer bestimmten DynamoDB-Tabelle durchzuführen. (Weitere Informationen finden Sie unter Identity and Access Management für Amazon DynamoDB.) Im Vergleich dazu konzentriert sich das DAX Sicherheitsmodell auf die Clustersicherheit und die Fähigkeit des Clusters, API DynamoDB-Aktionen in Ihrem Namen durchzuführen.

Warnung

Wenn Sie derzeit IAM Rollen und Richtlinien verwenden, um den Zugriff auf DynamoDB-Tabellendaten einzuschränken, DAX kann die Verwendung von diese Richtlinien untergraben. Ein Benutzer könnte beispielsweise Zugriff auf eine DynamoDB-Tabelle haben, DAX aber keinen expliziten Zugriff auf dieselbe Tabelle haben, indem er direkt auf DynamoDB zugreift. Weitere Informationen finden Sie unter Identity and Access Management für Amazon DynamoDB.

DAXerzwingt keine Trennung auf Benutzerebene für Daten in DynamoDB. Stattdessen erben Benutzer die Berechtigungen der DAX IAM Clusterrichtlinie, wenn sie auf diesen Cluster zugreifen. Wenn Sie also auf DynamoDB-Tabellen über zugreifenDAX, sind die einzigen Zugriffskontrollen, die wirksam sind, die Berechtigungen in der DAX Cluster-Richtlinie. IAM Es werden keine weiteren Berechtigungen erkannt.

Wenn Sie eine Isolierung benötigen, empfehlen wir, zusätzliche DAX Cluster zu erstellen und die IAM Richtlinie für jeden Cluster entsprechend zu definieren. Sie könnten beispielsweise mehrere DAX Cluster erstellen und jedem Cluster den Zugriff auf nur eine einzige Tabelle ermöglichen.

IAMServicerolle für DAX

Wenn Sie einen DAX Cluster erstellen, müssen Sie den Cluster einer IAM Rolle zuordnen. Dies wird als Servicerolle für den Cluster bezeichnet.

Angenommen, Sie möchten einen neuen DAX Cluster mit dem Namen DAXCluster01 erstellen. Sie könnten eine Servicerolle mit dem Namen DAXServiceRole01 erstellen und die Rolle mit DAXCluster01 verknüpfen. Die Richtlinie für DAXServiceRolewürde die DynamoDB-Aktionen definieren, die DAXCluster01 im Namen der Benutzer ausführen könnte, die mit DAXCluster 01 interagieren.

Wenn Sie eine Servicerolle erstellen, müssen Sie eine Vertrauensbeziehung zwischen dem Dienst DAXServiceRoleund dem DAX Dienst selbst angeben. Eine Vertrauensstellung bestimmt, welche Entitäten eine Rolle übernehmen und deren Berechtigungen nutzen können. Im Folgenden finden Sie ein Beispiel für ein Dokument mit einer Vertrauensbeziehung für DAXServiceRole:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dax.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Diese Vertrauensstellung ermöglicht es einem DAX Cluster, API DynamoDB-Aufrufe in Ihrem Namen anzunehmen DAXServiceRoleund auszuführen.

Die zulässigen API DynamoDB-Aktionen werden in einem IAM Richtliniendokument beschrieben, das Sie als Anlage beifügen. DAXServiceRole Dies ist ein Beispiel für ein Richtliniendokument.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DaxAccessPolicy", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/Books" ] } ] }

Diese Richtlinie ermöglicht DAX die Durchführung der erforderlichen API DynamoDB-Aktionen in einer DynamoDB-Tabelle. Die dynamodb:DescribeTable Aktion ist erforderlich, um Metadaten über die Tabelle DAX zu verwalten. Bei den anderen Aktionen handelt es sich um Lese- und Schreibaktionen, die für Elemente in der Tabelle ausgeführt werden. Die Tabelle mit dem Namen Books befindet sich in der Region US-West-2 und gehört der AWS Konto-ID. 123456789012

Anmerkung

DAXunterstützt Mechanismen, mit denen das Problem des verwirrten Stellvertreters beim dienstübergreifenden Zugriff vermieden werden kann. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Das Problem des verwirrten Stellvertreters.

IAMRichtlinie zum Zulassen des DAX Clusterzugriffs

Nachdem Sie einen DAX Cluster erstellt haben, müssen Sie einem Benutzer Berechtigungen erteilen, damit der Benutzer auf den DAX Cluster zugreifen kann.

Angenommen, Sie möchten einem Benutzer namens Alice Zugriff auf DAXCluster01 gewähren. Sie würden zunächst eine IAM Richtlinie (AliceAccessPolicy) erstellen, die die DAX Cluster und DAX API Aktionen definiert, auf die der Empfänger zugreifen kann. Sie können anschließend den Zugriff gewähren, indem Sie diese Richtlinie der Benutzerin Alice zuweisen.

Das folgende Richtliniendokument gewährt dem Empfänger vollen Zugriff am DAXCluster01.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }

Das Richtliniendokument ermöglicht den Zugriff auf den DAX Cluster, gewährt jedoch keine DynamoDB-Berechtigungen. (Die DynamoDB-Berechtigungen werden durch die DAX Servicerolle vergeben.)

Sie würden für die Benutzerin Alice zunächst eine AliceAccessPolicy mit dem zuvor gezeigten Richtliniendokument erstellen. Anschließend würden Sie die Richtlinie Alice zuweisen.

Anmerkung

Anstatt die Richtlinie einem Benutzer zuzuordnen, könnten Sie sie einer Rolle zuordnen. IAM Auf diese Weise hätten alle Benutzer, die diese Rolle übernehmen, die Berechtigungen, die Sie in der Richtlinie festgelegt haben.

Die Benutzerrichtlinie bestimmt zusammen mit der DAX Servicerolle die DynamoDB-Ressourcen und API Aktionen, über die der Empfänger zugreifen kann. DAX

Fallstudie: Zugriff auf DynamoDB und DAX

Das folgende Szenario kann Ihnen helfen, Ihr Verständnis der IAM Richtlinien für die Verwendung mit zu vertiefen. DAX (Wir werden uns für den Rest dieses Abschnitts auf dieses Szenario beziehen.) Das folgende Diagramm zeigt einen allgemeinen Überblick des Szenarios.

Ein allgemeiner Überblick über ein IAM Richtlinienszenario zur VerwendungDAX.

In diesem Szenario gibt es die folgenden Entitäten:

  • Ein Benutzer (Bob).

  • Eine IAM Rolle (BobUserRole). Bob übernimmt diese Rolle zur Laufzeit.

  • Eine IAM Richtlinie (BobAccessPolicy). Diese Richtlinie ist beigefügtBobUserRole. BobAccessPolicydefiniert die DynamoDB und die DAX Ressourcen, auf die BobUserRole zugegriffen werden darf.

  • Ein DAX Cluster ()DAXCluster01.

  • Eine IAM-Service-Rolle (DAXServiceRole). Diese Rolle erlaubt DAXCluster01 den Zugriff auf DynamoDB.

  • Eine IAM Richtlinie (DAXAccessPolicy). Diese Richtlinie ist beigefügtDAXServiceRole. DAXAccessPolicydefiniert die DynamoDB APIs und die Ressourcen, auf die DAXCluster01 zugegriffen werden darf.

  • Eine DynamoDB-Tabelle (Books)

Die Kombination der Richtlinienanweisungen in BobAccessPolicy und DAXAccessPolicy bestimmt, was Bob mit der Tabelle Books machen kann. Bob kann beispielsweise Books direkt (über den DynamoDB-Endpunkt), indirekt (über den DAX Cluster) oder beides zugreifen. Bob könnte auch Daten von Books lesen, Daten in Books schreiben oder beides.

Zugriff auf DynamoDB, aber kein Zugriff mit DAX

Überblick über eine IAM Richtlinie, die den direkten Zugriff auf eine Tabelle ermöglicht, den indirekten Zugriff über einen DAX Cluster jedoch blockiert.

Es ist möglich, direkten Zugriff auf eine DynamoDB-Tabelle zuzulassen und gleichzeitig indirekten Zugriff über einen DAX Cluster zu verhindern. Für direkten Zugriff auf DynamoDB werden die Berechtigungen für BobUserRole durch BobAccessPolicy bestimmt (welche an die Rolle angehängt sind).

Lesezugriff auf (nur) DynamoDB

Bob kann auf DynamoDB mit BobUserRole zugreifen. Die mit dieser Rolle (BobAccessPolicy) verknüpfte IAM Richtlinie bestimmt, auf welche DynamoDB-Tabellen zugegriffen BobUserRole werden kann und welche APIs davon aufgerufen BobUserRole werden können.

Berücksichtigen Sie das folgende Richtliniendokument für BobAccessPolicy.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Wenn dieses Dokument an BobAccessPolicy angehängt wird, ermöglicht es BobUserRole den Zugriff auf den DynamoDB-Endpunkt und das Ausführen von schreibgeschützten Operationen mit der Books-Tabelle.

DAXerscheint in dieser Richtlinie nicht, daher wird der Zugriff über DAX verweigert.

Lese- und Schreibzugriff auf (nur) DynamoDB

Wenn BobUserRole Lese- und Schreibzugriff auf DynamoDB benötigt, würde die folgende Richtlinie funktionieren.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Auch hier erscheint DAX es nicht in dieser Richtlinie, sodass der Zugriff über verweigert DAX wird.

Zugriff auf DynamoDB und auf DAX

Eine IAM Richtlinie, die Zugriff sowohl auf eine DynamoDB-Tabelle als auch auf einen DAX Cluster gewährt.

Um den Zugriff auf einen DAX Cluster zu ermöglichen, müssen Sie DAX spezifische Aktionen in eine Richtlinie aufnehmen. IAM

Die folgenden DAX -spezifischen Aktionen entsprechen ihren ähnlich benannten Gegenstücken in DynamoDB: API

  • dax:GetItem

  • dax:BatchGetItem

  • dax:Query

  • dax:Scan

  • dax:PutItem

  • dax:UpdateItem

  • dax:DeleteItem

  • dax:BatchWriteItem

  • dax:ConditionCheckItem

Das Gleiche gilt für den dax:EnclosingOperation-Bedingungsschlüssel.

Nur-Lese-Zugriff auf DynamoDB und Nur-Lese-Zugriff auf DAX

Nehmen wir an, Bob benötigt nur Lesezugriff auf die Books Tabelle, sowohl von DynamoDB als auch von. DAX Die folgende Richtlinie (BobUserRole zugeordnet) gewährt diesen Zugriff.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Die Richtlinie enthält eine Anweisung für DAX access (DAXAccessStmt) und eine weitere Anweisung für D (). ynamoDBaccess DynamoDBAccessStmt Diese Anweisungen würden Bob gestatten, GetItem-, BatchGetItem-, Query- und Scan-Anforderungen an den DAXCluster01 zu senden.

Die Servicerolle für DAXCluster01 würde jedoch auch Lesezugriff auf die Books-Tabelle in DynamoDB erfordern. Die folgende IAM Richtlinie, die beigefügt istDAXServiceRole, würde diese Anforderung erfüllen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Lese-/Schreibzugriff auf DynamoDB und schreibgeschützter Zugriff mit DAX

Für eine bestimmte Benutzerrolle können Sie Lese-/Schreibzugriff auf eine DynamoDB-Tabelle gewähren und gleichzeitig den schreibgeschützten Zugriff über zulassen. DAX

Für Bob BobUserRole müsste die IAM Richtlinie für DynamoDB Lese- und Schreibaktionen in der Books Tabelle zulassen und gleichzeitig schreibgeschützte Aktionen über unterstützen. DAXCluster01

Das folgende Richtliniendokument für BobUserRole gewährt diesen Zugriff.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Darüber hinaus DAXServiceRole wäre eine IAM Richtlinie erforderlich, die es ermöglicht, schreibgeschützte DAXCluster01 Aktionen für die Tabelle auszuführen. Books

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:DescribeTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Lese-/Schreibzugriff auf DynamoDB und Lese-/Schreibzugriff auf DAX

Angenommen, Bob benötigte Lese- und Schreibzugriff auf die Books-Tabelle, direkt aus DynamoDB oder indirekt von DAXCluster01. Das folgende Richtliniendokument, das BobAccessPolicy zugeordnet ist, gewährt diesen Zugriff.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Darüber hinaus DAXServiceRole wäre eine IAM Richtlinie erforderlich, die es ermöglicht, Lese-/Schreibaktionen für die DAXCluster01 Tabelle durchzuführen. Books

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Zugriff auf DynamoDB überDAX, aber kein direkter Zugriff auf DynamoDB

In diesem Szenario kann Bob über auf die Books Tabelle zugreifenDAX, er hat jedoch keinen direkten Zugriff auf die Books Tabelle in DynamoDB. Wenn Bob Zugriff erhält, erhält er also auch Zugriff auf eine DynamoDB-Tabelle, auf die er sonst möglicherweise nicht zugreifen könnte. DAX Wenn Sie eine IAM Richtlinie für die DAX Servicerolle konfigurieren, denken Sie daran, dass jeder Benutzer, dem über die Benutzerzugriffsrichtlinie Zugriff auf den DAX Cluster gewährt wird, Zugriff auf die in dieser Richtlinie angegebenen Tabellen erhält. In diesem Fall erhält BobAccessPolicy Zugriff auf die in DAXAccessPolicy angegebenen Tabellen.

Ein Szenario, in dem ein Benutzer über einen DAX Cluster ohne direkten DynamoDB-Zugriff auf eine Tabelle zugreifen kann.

Wenn Sie derzeit IAM Rollen und Richtlinien verwenden, um den Zugriff auf DynamoDB-Tabellen und -Daten einzuschränken, DAX kann die Verwendung diese Richtlinien untergraben. In der folgenden Richtlinie hat Bob Zugriff auf eine DynamoDB-Tabelle über, hat DAX aber keinen expliziten direkten Zugriff auf dieselbe Tabelle in DynamoDB.

Das folgende Richtliniendokument (BobAccessPolicy), das an BobUserRole angehängt ist, würde diesen Zugriff gewähren.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" } ] }

In dieser Zugriffsrichtlinie gibt es keine Berechtigungen, um direkt auf DynamoDB zuzugreifen.

Zusammen mit BobAccessPolicy gibt BobUserRole der Folgenden DAXAccessPolicy den Zugriff auf die DynamoDB-Tabelle Books, auch wenn BobUserRole nicht direkt auf die Books-Tabelle zugegriffen werden kann.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }

Wie dieses Beispiel zeigt, müssen Sie bei der Konfiguration der Zugriffskontrolle für die Benutzerzugriffsrichtlinie und die DAX Clusterzugriffsrichtlinie den Zugriff vollständig verstehen, um sicherzustellen, dass das end-to-end Prinzip der geringsten Rechte eingehalten wird. Stellen Sie außerdem sicher, dass zuvor festgelegte Zugriffskontrollrichtlinien nicht unterlaufen werden, wenn Sie einem Benutzer Zugriff auf einen DAX Cluster gewähren.