Contrôles de l'accélérateur DynamoDB - AWS Control Tower

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Contrôles de l'accélérateur DynamoDB

[CT.DAX.PR.1] Exiger le chiffrement au repos pour tous les clusters Amazon DynamoDB Accelerator (DAX)

Ce contrôle vérifie si les clusters Amazon DynamoDB Accelerator (DAX) sont chiffrés au repos.

Note

Le contrôle CT.DAX.PR.1 ne peut pas être activé depuis les régions d'origine Canada (Centre), Europe (Stockholm) et Asie-Pacifique (Séoul), car le type de AWS::DAX::Cluster ressource n'est pas disponible dans ces régions. Si votre région d'origine n'est pas l'une de ces trois régions, vous pouvez activer le contrôle de ces trois régions depuis une autre région d'origine, si ces trois régions sont régies par AWS Control Tower dans votre zone de landing zone. Par exemple, si votre région d'origine est la région ouest des États-Unis (Oregon), vous pouvez déployer le contrôle dans la région du Canada (centre), si la région du Canada (centre) est régie par AWS Control Tower.

  • Objectif de contrôle : crypter les données au repos

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::DAX::Cluster

  • AWS CloudFormationrègle de garde : CT.DAX.PR.1spécification des règles

Détails et exemples

Explication

Le chiffrement des données au repos réduit le risque que les données stockées sur disque soient accessibles à un utilisateur non authentifié. AWS Le chiffrement ajoute un autre ensemble de contrôles d'accès, ce qui limite la capacité des utilisateurs non autorisés à accéder aux données. Par exemple, les autorisations d'API doivent déchiffrer les données avant de pouvoir les lire.

Remédiation en cas de défaillance des règles

Fournissez une SSESpecification configuration avec SSEEnabled set totrue.

Les exemples suivants montrent comment mettre en œuvre cette correction.

Cluster Amazon DAX - Exemple

Cluster Amazon DAX configuré avec le chiffrement côté serveur activé. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "DAXCluster": { "Type": "AWS::DAX::Cluster", "Properties": { "IAMRoleARN": { "Fn::GetAtt": [ "DAXServiceRole", "Arn" ] }, "NodeType": "dax.t3.small", "ReplicationFactor": 1, "SSESpecification": { "SSEEnabled": true } } } }

Exemple YAML

DAXCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: !GetAtt 'DAXServiceRole.Arn' NodeType: dax.t3.small ReplicationFactor: 1 SSESpecification: SSEEnabled: true

CT.DAX.PR.1spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # dax_cluster_encryption_enabled_check # # Description: # This control checks whether Amazon DynamoDB Accelerator (DAX) clusters are encrypted at rest. # # Reports on: # AWS::DAX::Cluster # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any DAX Cluster resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains at least one DAX Cluster resource # And: 'SSESpecification' has not been provided # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains at least one DAX Cluster resource # And: 'SSESpecification' has been provided and 'SSESpecification.SSEEnabled' is missing or has been set to a # value other than bool(true) # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains at least one DAX Cluster resource # And: 'SSESpecification' has been provided and 'SSESpecification.SSEEnabled' is present and has been set to # bool(true) # Then: PASS # # Constants # let DAX_CLUSTER_TYPE = "AWS::DAX::Cluster" let INPUT_DOCUMENT = this # # Assignments # let dax_clusters = Resources.*[ Type == %DAX_CLUSTER_TYPE ] # # Primary Rules # rule dax_cluster_encryption_enabled_check when is_cfn_template(%INPUT_DOCUMENT) %dax_clusters not empty { check(%dax_clusters.Properties) << [CT.DAX.PR.1]: Require encryption at rest for all Amazon DynamoDB Accelerator (DAX) clusters [FIX]: Provide an 'SSESpecification' configuration with 'SSEEnabled' set to 'true'. >> } rule dax_cluster_encryption_enabled_check when is_cfn_hook(%INPUT_DOCUMENT, %DAX_CLUSTER_TYPE) { check(%INPUT_DOCUMENT.%DAX_CLUSTER_TYPE.resourceProperties) << [CT.DAX.PR.1]: Require encryption at rest for all Amazon DynamoDB Accelerator (DAX) clusters [FIX]: Provide an 'SSESpecification' configuration with 'SSEEnabled' set to 'true'. >> } # # Parameterized Rules # rule check(dax_cluster) { %dax_cluster { # Scenario 2 SSESpecification exists SSESpecification is_struct # Scenario 3 and 4 SSESpecification { SSEEnabled exists SSEEnabled == true } } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

CT.DAX.PR.1exemples de modèles

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: DAXServiceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: dax.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: DynamoAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:PutItem - dynamodb:GetItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:Query - dynamodb:Scan - dynamodb:BatchGetItem - dynamodb:BatchWriteItem - dynamodb:ConditionCheckItem Resource: Fn::Sub: arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:* DAXCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: Fn::GetAtt: [DAXServiceRole, Arn] NodeType: dax.t3.small ReplicationFactor: 1 SSESpecification: SSEEnabled: true

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: DAXServiceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: dax.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: DynamoAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:PutItem - dynamodb:GetItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:Query - dynamodb:Scan - dynamodb:BatchGetItem - dynamodb:BatchWriteItem - dynamodb:ConditionCheckItem Resource: Fn::Sub: arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:* DAXCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: Fn::GetAtt: [DAXServiceRole, Arn] NodeType: dax.t3.small ReplicationFactor: 1 SSESpecification: SSEEnabled: false

[CT.DAX.PR.2] Exiger un cluster Amazon DAX pour déployer des nœuds dans au moins trois zones de disponibilité

Ce contrôle vérifie si un cluster Amazon DAX est configuré pour déployer des nœuds de cluster dans au moins trois zones de disponibilité.

  • Objectif de contrôle : améliorer la résilience, améliorer la disponibilité

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::DAX::Cluster

  • AWS CloudFormationrègle de garde : Spécification de la règle CT.DAX.PR.2

Détails et exemples

Explication

AWS Control Tower vous recommande de déployer vos clusters Amazon DAX dans plusieurs zones de disponibilité. Cette technique de déploiement vous permet de concevoir et d'exploiter des applications et des bases de données qui basculent automatiquement entre les zones de disponibilité, sans interruption. Pour une utilisation en production, nous vous recommandons vivement de déployer le DAX sur au moins trois nœuds, chaque nœud étant placé dans une zone de disponibilité différente.

Remédiation en cas de défaillance des règles

Définissez le ReplicationFactor paramètre sur une valeur entière supérieure ou égale à trois (>= 3), puis définissez le AvailabilityZones paramètre sur une liste contenant trois entrées de zone de disponibilité uniques.

Les exemples suivants montrent comment mettre en œuvre cette correction.

Cluster Amazon DAX - Exemple

Cluster Amazon DAX configuré avec trois nœuds et trois zones de disponibilité distinctes. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "DaxCluster": { "Type": "AWS::DAX::Cluster", "Properties": { "IAMRoleARN": { "Fn::GetAtt": [ "DaxDynamoAccessRole", "Arn" ] }, "NodeType": "dax.t3.small", "ReplicationFactor": 3, "AvailabilityZones": [ { "Fn::Select": [ 0, { "Fn::GetAZs": "" } ] }, { "Fn::Select": [ 1, { "Fn::GetAZs": "" } ] }, { "Fn::Select": [ 2, { "Fn::GetAZs": "" } ] } ] } } }

Exemple YAML

DaxCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: !GetAtt 'DaxDynamoAccessRole.Arn' NodeType: dax.t3.small ReplicationFactor: 3 AvailabilityZones: - !Select - 0 - !GetAZs '' - !Select - 1 - !GetAZs '' - !Select - 2 - !GetAZs ''

Spécification de la règle CT.DAX.PR.2

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # dax_cluster_multi_az_check # # Description: # This control checks whether an Amazon DAX cluster is configured to deploy cluster nodes to at least three Availability Zones. # # Reports on: # AWS::DAX::Cluster # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any DAX cluster resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ReplicationFactor' has not been provided or has been provided as an integer # value less than three (< 3) # And: 'AvailabilityZones' has not been provided or provided as an empty list or # list with less than three unique entires # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ReplicationFactor' has been provided as an integer value greater than or # equal to three (>= 3) # And: 'AvailabilityZones' has not been provided or provided as an empty list or # list with less than three unique entires # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ReplicationFactor' has not been provided or has been provided as an integer # value less than three (< 3) # And: 'AvailabilityZones' has been provided as a list with three or more unique entires # Then: FAIL # Scenario: 5 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ReplicationFactor' has been provided as an integer value greater than or # equal to three (>= 3) # And: 'AvailabilityZones' has been provided as a list with three or more unique entires # Then: PASS # # Constants # let DAX_CLUSTER_TYPE = "AWS::DAX::Cluster" let MINIMUM_NODE_COUNT = 3 let INPUT_DOCUMENT = this # # Assignments # let dax_clusters = Resources.*[ Type == %DAX_CLUSTER_TYPE ] # # Primary Rules # rule dax_cluster_multi_az_check when is_cfn_template(%INPUT_DOCUMENT) %dax_clusters not empty { check(%dax_clusters.Properties) << [CT.DAX.PR.2]: Require an Amazon DAX cluster to deploy nodes to at least three Availability Zones [FIX]: Set the 'ReplicationFactor' parameter to an integer value greater than or equal to three (>= 3), and set the 'AvailabilityZones' parameter to a list containing three unique Availability Zone entries. >> } rule dax_cluster_multi_az_check when is_cfn_hook(%INPUT_DOCUMENT, %DAX_CLUSTER_TYPE) { check(%INPUT_DOCUMENT.%DAX_CLUSTER_TYPE.resourceProperties) << [CT.DAX.PR.2]: Require an Amazon DAX cluster to deploy nodes to at least three Availability Zones [FIX]: Set the 'ReplicationFactor' parameter to an integer value greater than or equal to three (>= 3), and set the 'AvailabilityZones' parameter to a list containing three unique Availability Zone entries. >> } # # Parameterized Rules # rule check(dax_cluster) { %dax_cluster { # Scenario 2 ReplicationFactor exists AvailabilityZones exists AvailabilityZones is_list AvailabilityZones not empty # Scenarios 3, 4 and 5 ReplicationFactor >= %MINIMUM_NODE_COUNT AvailabilityZones[0] exists AvailabilityZones[1] exists AvailabilityZones[2] exists let az_one = AvailabilityZones[0] let az_two = AvailabilityZones[1] let az_three = AvailabilityZones[2] check_az_is_unique(%az_one, %az_two, %az_three) check_az_is_unique(%az_two, %az_one, %az_three) } } rule check_az_is_unique(az, first_az, second_az) { %az not in %first_az %az not in %second_az } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

Exemples de modèles CT.DAX.PR.2

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: DaxDynamoAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: dax.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: DynamoAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:PutItem - dynamodb:GetItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:Query - dynamodb:Scan - dynamodb:BatchGetItem - dynamodb:BatchWriteItem - dynamodb:ConditionCheckItem Resource: Fn::Sub: arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:* DaxCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: Fn::GetAtt: - DaxDynamoAccessRole - Arn NodeType: dax.t3.small ReplicationFactor: 3 AvailabilityZones: - Fn::Select: - 0 - Fn::GetAZs: '' - Fn::Select: - 1 - Fn::GetAZs: '' - Fn::Select: - 2 - Fn::GetAZs: ''

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: DaxDynamoAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: dax.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: DynamoAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:PutItem - dynamodb:GetItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:Query - dynamodb:Scan - dynamodb:BatchGetItem - dynamodb:BatchWriteItem - dynamodb:ConditionCheckItem Resource: Fn::Sub: arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:* DaxCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: Fn::GetAtt: - DaxDynamoAccessRole - Arn NodeType: dax.t3.small ReplicationFactor: 3

[CT.DAX.PR.3] Exiger un cluster Amazon DAX pour chiffrer les données en transit avec le protocole TLS (Transport Layer Security)

Ce contrôle vérifie si un point de terminaison de cluster Amazon DynamoDB Accelerator (DAX) est configuré pour chiffrer les données en transit avec le protocole TLS (Transport Layer Security).

  • Objectif de contrôle : crypter les données en transit

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::DAX::Cluster

  • AWS CloudFormationrègle de garde : Spécification de la règle CT.DAX.PR.3

Détails et exemples

Explication

Amazon DynamoDB Accelerator (DAX) prend en charge le chiffrement lors du transfert de données entre votre application et votre cluster DAX, afin que vous puissiez utiliser le DAX dans des applications soumises à des exigences de chiffrement strictes. Le chiffrement DAX en transit garantit que toutes les demandes et réponses entre l'application et le cluster sont chiffrées par le protocole TLS (Transport Level Security) et que les connexions au cluster peuvent être authentifiées par la vérification d'un certificat x509 du cluster.

Considérations d'utilisation
  • Pour activer le chiffrement en transit entre votre application et le cluster DAX, veillez à utiliser une version récente de l'un des clients DAX prenant en charge le protocole TLS dans votre application.

    Le chiffrement en transit ne peut pas être activé sur un cluster DAX existant. Pour utiliser le chiffrement en transit dans une application DAX existante, créez un cluster avec le chiffrement en transit activé, réacheminez le trafic de votre application vers celui-ci, puis supprimez l'ancien cluster.

Corrections en cas de défaillance des règles

Définissez la valeur de la ClusterEndpointEncryptionType propriété sur TLS.

Les exemples suivants montrent comment mettre en œuvre cette correction.

Cluster Amazon DAX - Exemple

Un cluster Amazon DAX configuré pour chiffrer les données en transit. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "DaxCluster": { "Type": "AWS::DAX::Cluster", "Properties": { "IAMRoleARN": { "Fn::GetAtt": [ "DaxDynamoAccessRole", "Arn" ] }, "NodeType": "dax.t3.small", "ReplicationFactor": 3, "ClusterEndpointEncryptionType": "TLS" } } }

Exemple YAML

DaxCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: !GetAtt 'DaxDynamoAccessRole.Arn' NodeType: dax.t3.small ReplicationFactor: 3 ClusterEndpointEncryptionType: TLS

Spécification de la règle CT.DAX.PR.3

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # dax_tls_endpoint_encryption_check # # Description: # This control checks whether an Amazon DAX cluster endpoint is configured to encrypt data in transit with Transport Layer Security (TLS). # # Reports on: # AWS::DAX::Cluster # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any DAX cluster resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ClusterEndpointEncryptionType' has not been provided # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ClusterEndpointEncryptionType' has been provided and set to a value other than 'TLS' # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a DAX cluster resource # And: 'ClusterEndpointEncryptionType' has been provided and set to 'TLS' # Then: PASS # # Constants # let DAX_CLUSTER_TYPE = "AWS::DAX::Cluster" let ALLOWED_CLUSTER_ENCRYPTION_TYPES = [ "TLS" ] let INPUT_DOCUMENT = this # # Assignments # let dax_clusters = Resources.*[ Type == %DAX_CLUSTER_TYPE ] # # Primary Rules # rule dax_tls_endpoint_encryption_check when is_cfn_template(%INPUT_DOCUMENT) %dax_clusters not empty { check(%dax_clusters.Properties) << [CT.DAX.PR.3]: Require an Amazon DAX cluster to encrypt data in transit with Transport Layer Security (TLS) [FIX]: Set the value of the ClusterEndpointEncryptionType property to TLS. >> } rule dax_tls_endpoint_encryption_check when is_cfn_hook(%INPUT_DOCUMENT, %DAX_CLUSTER_TYPE) { check(%INPUT_DOCUMENT.%DAX_CLUSTER_TYPE.resourceProperties) << [CT.DAX.PR.3]: Require an Amazon DAX cluster to encrypt data in transit with Transport Layer Security (TLS) [FIX]: Set the value of the ClusterEndpointEncryptionType property to TLS. >> } # # Parameterized Rules # rule check(dax_cluster) { %dax_cluster { # Scenario 2 ClusterEndpointEncryptionType exists # Scenarios 3 and 4 ClusterEndpointEncryptionType in %ALLOWED_CLUSTER_ENCRYPTION_TYPES } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

Exemples de modèles CT.DAX.PR.3

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: DaxDynamoAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: dax.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: DynamoAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:PutItem - dynamodb:GetItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:Query - dynamodb:Scan - dynamodb:BatchGetItem - dynamodb:BatchWriteItem - dynamodb:ConditionCheckItem Resource: Fn::Sub: arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:* DaxCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: Fn::GetAtt: - DaxDynamoAccessRole - Arn NodeType: dax.t3.small ReplicationFactor: 3 ClusterEndpointEncryptionType: TLS

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: DaxDynamoAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: dax.amazonaws.com Action: sts:AssumeRole Path: / Policies: - PolicyName: DynamoAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:PutItem - dynamodb:GetItem - dynamodb:UpdateItem - dynamodb:DeleteItem - dynamodb:Query - dynamodb:Scan - dynamodb:BatchGetItem - dynamodb:BatchWriteItem - dynamodb:ConditionCheckItem Resource: Fn::Sub: arn:${AWS::Partition}:dynamodb:${AWS::Region}:${AWS::AccountId}:* DaxCluster: Type: AWS::DAX::Cluster Properties: IAMRoleARN: Fn::GetAtt: - DaxDynamoAccessRole - Arn NodeType: dax.t3.small ReplicationFactor: 3 ClusterEndpointEncryptionType: NONE