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.
DynamoDB Accelerator (DAX) kann mit DynamoDB zusammenarbeiten, um Anwendungen nahtlos eine Caching-Schicht hinzuzufügen. DAX und DynamoDB verfügen jedoch über separate Zugriffssteuerungsmechanismen. Beide Dienste verwenden AWS Identity and Access Management (IAM), um ihre jeweiligen Sicherheitsrichtlinien zu implementieren, aber die Sicherheitsmodelle für DAX und DynamoDB sind unterschiedlich.
Wir empfehlen dringend, dass Sie beide Sicherheitsmodelle verstehen, damit Sie für Ihre Anwendungen mit DAX ordnungsgemäße Sicherheitsmaßnahmen implementieren können.
In diesem Abschnitt werden die Zugriffskontrollmechanismen von DAX beschrieben und beispielhafte IAM-Richtlinien bereitgestellt, die Sie an Ihre Bedürfnisse anpassen können.
Mit DynamoDB können Sie IAM-Richtlinien erstellen, die Aktionen begrenzen, die ein Benutzer mit individuellen DynamoDB-Ressourcen durchfü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 Cluster-Sicherheit und die Fähigkeit des Clusters zum Ausführen von DynamoDB-API-Aktionen in Ihrem Namen.
Warnung
Wenn Sie derzeit IAM-Rollen und -Richtlinien zum Einschränken des Zugriffs auf DynamoDB-Tabellendaten nutzen, kann die Verwendung von DAX diese Richtlinien unterlaufen. Beispiel: Ein Benutzer hat Zugriff auf eine DynamoDB-Tabelle über DAX, aber keinen expliziten Zugriff auf dieselbe Tabelle, wenn er direkt auf DynamoDB zugreift. Weitere Informationen finden Sie unter Identity and Access Management für Amazon DynamoDB.
DAX erzwingt keine Separation der Daten in DynamoDB auf Benutzerebene. Stattdessen erben Benutzer die Berechtigungen der IAM-Richtlinie des DAX-Clusters, wenn sie auf diesen Cluster zugreifen. Beim Zugriff auf die DynamoDB-Tabellen über DAX sind daher die einzigen aktiven Zugriffskontrollen die Berechtigungen in der IAM-Richtlinie des DAX-Clusters. Es werden keine weiteren Berechtigungen erkannt.
Wenn Sie Isolation benötigen, empfehlen wir, dass Sie zusätzliche DAX-Cluster erstellen und die IAM-Richtlinie für jeden Cluster entsprechend abgrenzen. Sie können z. B. mehrere DAX-Cluster erstellen und jedem Cluster den Zugriff auf eine einzelne Tabelle erlauben.
IAM-Servicerolle für DAX
Beim Erstellen eines DAX-Clusters, müssen Sie den Cluster mit einer IAM-Rolle verknüpfen. Dies wird als Servicerolle für den Cluster bezeichnet.
Angenommen, Sie möchten einen neuen DAX-Cluster mit dem Namen 01 erstellen. DAXCluster Sie könnten eine Servicerolle mit dem Namen DAXServiceRole erstellen und die Rolle DAXCluster01 zuordnen. Die Richtlinie für DAXServiceRole wü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 DAXServiceRole und dem DAX-Service 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 zur Vertrauensstellung 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, DAXServiceeine Rolle zu übernehmen und DynamoDB-API-Aufrufe in Ihrem Namen durchzuführen.
Die zulässigen DynamoDB-API-Aktionen werden in einem IAM-Richtliniendokument beschrieben, das Sie an Role anhängen. DAXService 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 erlaubt DAX die Durchführung aller DynamoDB-API-Aktionen an einer DynamoDB-Tabelle. Die dynamodb:DescribeTable
-Aktion ist erforderlich, damit DAX Metadaten über die Tabelle beibehält, und die anderen sind Lese- und Schreibvorgänge, 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 ist im Besitz der AWS-Konto-ID 123456789012
.
Anmerkung
DAX unterstützt Mechanismen, um das Problem des verwirrten Stellvertreters beim dienstübergreifenden Zugriff zu verhindern. Weitere Informationen finden Sie unter Das Problem des verwirrten Stellvertreters im IAM-Benutzerhandbuch.
IAM-Richtlinie, um DAX-Cluster-Zugriff zu gewähren
Nach dem Erstellen eines DAX-Clusters müssen Sie einem Benutzer Berechtigungen erteilen, damit er auf den DAX-Cluster zugreifen kann.
Nehmen wir beispielsweise an, 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 am DAXCluster01. Vollzugriff.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"dax:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01"
]
}
]
}
Das Richtliniendokument erlaubt den Zugriff auf den DAX-Cluster, erteilt jedoch keine DynamoDB-Berechtigungen. (Die DynamoDB-Berechtigungen werden von der DAX-Servicerolle zugewiesen.)
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 zuzuweisen, könnten Sie sie einer IAM-Rolle zuweisen. Auf diese Weise hätten alle Benutzer, die diese Rolle übernehmen, die Berechtigungen, die Sie in der Richtlinie festgelegt haben.
Die Benutzerrichtlinie bestimmt in Verbindung mit der DAX-Servicerolle die DynamoDB-Ressourcen und API-Aktionen, auf die der Empfänger über DAX zugreifen kann.
Fallstudie: Zugreifen auf DynamoDB und DAX
Das folgende Szenario kann helfen, das Verständnis der IAM-Richtlinien für die Verwendung mit DAX zu vertiefen. (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 anBobUserRole
angehängt.BobAccessPolicy
definiert die Ressourcen DynamoDB und DAX, auf dieBobUserRole
zugreifen darf. -
Ein DAX-Cluster (
DAXCluster01
). -
Eine IAM-Servicerolle (
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. Beispielsweise kann Bob 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, während ein indirekter Zugriff mit einem DAX-Cluster verhindert wird. 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 dieser Rolle (BobAccessPolicy
) zugeordnete IAM-Richtlinie bestimmt, auf welche DynamoDB-Tabellen zugegriffen BobUserRole
werden kann und welche APIs davon BobUserRole
aufgerufen 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.
DAX erscheint nicht in dieser Richtlinie, sodass ein Zugriff über DAX verweigert wird.
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"
}
]
}
Erneut erscheint DAX nicht in dieser Richtlinie, sodass ein Zugriff über DAX verweigert wird.
Zugriff auf DynamoDB und DAX

Um einen Zugriff auf einen DAX-Cluster zu erlauben, müssen Sie DAX-spezifische Aktionen in einer IAM-Richtlinie angeben.
Die folgenden DAX-spezifischen Aktionen entsprechen ihren Gegenstücken mit vergleichbaren Namen in der 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.
Schreibgeschützter Zugriff auf DynamoDB und schreibgeschützter Zugriff auf DAX
In diesem Beispiel gehen wir davon aus, dass Bob Lesezugriff auf die Books
-Tabelle aus DynamoDB und DAX benötigt. 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 den DAX-Zugriff (DAXAccessStmt
) und eine weitere Anweisung für Dynamo DBaccess (). 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, an DAXServiceRole
angehängte IAM-Richtlinie 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ützt mit DAX
Für eine bestimmte Benutzerrolle können Sie Lese-/Schreibzugriff auf eine DynamoDB-Tabelle bereitstellen und gleichzeitig schreibgeschützten Zugriff über DAX zulassen.
Für Bob müsste die IAM-Richtlinie für BobUserRole
DynamoDB-Lese- und Schreibaktionen für die Books
-Tabelle zulassen und gleichzeitig schreibgeschützte Aktionen über DAXCluster01
unterstützen.
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"
}
]
}
Zudem würde DAXServiceRole
eine IAM-Richtlinie erforderlich machen, die DAXCluster01
schreibgeschützte Aktionen mit der Books
-Tabelle erlaubt.
{
"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"
}
]
}
Read/write access to DynamoDB and read/writeZugriff 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 würde DAXServiceRole
eine IAM-Richtlinie fordern, die DAXCluster01
das Ausführen von Lese-/Schreibaktionen für die Books
-Tabelle ermöglicht.
{
"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 via DAX, aber kein direkter Zugriff auf DynamoDB
In diesem Szenario kann Bob über DAX auf die Books
-Tabelle zugreifen, hat aber keinen direkten Zugriff auf die Books
-Tabelle in DynamoDB. Wenn Bob also Zugriff auf DAX erhält, erhält er auch Zugriff auf eine DynamoDB-Tabelle, auf die er sonst möglicherweise nicht zugreifen könnte. 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, kann die Verwendung von DAX diese Richtlinien untergraben. In der folgenden Richtlinie hat Bob zugriff auf eine DynamoDB-Tabelle über 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-Cluster-Zugriffsrichtlinie den end-to-end Zugriff vollständig verstehen, um sicherzustellen, dass das Prinzip der geringsten Rechte eingehalten wird. Stellen Sie zudem sicher, dass, wenn Sie einem Benutzer Zugriff auf einen DAX-Cluster gewähren, zuvor festgelegte Zugriffskontrollrichtlinien nicht unterlaufen werden.