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.
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
.BobAccessPolicy
definiert die DynamoDB und die DAX Ressourcen, auf dieBobUserRole
zugegriffen werden darf. -
Ein DAX Cluster ()
DAXCluster01
. -
Eine IAM-Service-Rolle (
DAXServiceRole
). Diese Rolle erlaubtDAXCluster01
den Zugriff auf DynamoDB. -
Eine IAM Richtlinie (
DAXAccessPolicy
). Diese Richtlinie ist beigefügtDAXServiceRole
.DAXAccessPolicy
definiert die DynamoDB APIs und die Ressourcen, auf dieDAXCluster01
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
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
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.
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.