Contrôles Amazon Elastic File System - 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 Amazon Elastic File System

[CT.ELASTICFILESYSTEM.PR.1] Exiger un système de fichiers Amazon EFS pour chiffrer les données des fichiers au repos en utilisant AWS KMS

Ce contrôle vérifie si un système de fichiers Amazon Elastic File System (Amazon EFS) est configuré pour chiffrer les données des fichiers à l'aide AWS KMS de.

  • 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::EFS::FileSystem

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

Détails et exemples

Explication

Pour renforcer la sécurité de vos données sensibles dans Amazon EFS, vous devez créer des systèmes de fichiers chiffrés. Amazon EFS prend en charge le chiffrement des systèmes de fichiers au repos. Vous pouvez activer le chiffrement des données au repos lorsque vous créez un système de fichiers Amazon EFS.

Considérations d'utilisation
  • Ce contrôle nécessite uniquement la Encrypted définition de la propriététrue, et il n'est pas nécessaire que la KmsKeyId propriété soit fournie.

  • Si la KmsKeyId propriété n'est pas fournie, la valeur par défaut AWS KMS key d'Amazon EFS est utilisée pour protéger le système de fichiers chiffré. /aws/elasticfilesystem

Corrections en cas de défaillance des règles

EncryptedDéfini sur true et éventuellement défini KmsKeyId sur un AWS KMS key identifiant valide.

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

Système de fichiers Amazon EFS : premier exemple

Système de fichiers Amazon EFS configuré avec le chiffrement activé, par défaut AWS KMS key pour Amazon EFS. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "EFSFileSystem": { "Type": "AWS::EFS::FileSystem", "Properties": { "Encrypted": true } } }

Exemple YAML

EFSFileSystem: Type: AWS::EFS::FileSystem Properties: Encrypted: true

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

Système de fichiers Amazon EFS : deuxième exemple

Système de fichiers Amazon EFS configuré avec le chiffrement activé, au moyen d'un système géré par le clientAWS KMS key. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "EFSFileSystem": { "Type": "AWS::EFS::FileSystem", "Properties": { "Encrypted": true, "KmsKeyId": { "Ref": "KMSKey" } } } }

Exemple YAML

EFSFileSystem: Type: AWS::EFS::FileSystem Properties: Encrypted: true KmsKeyId: !Ref 'KMSKey'

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

# ################################### ## Rule Specification ## ##################################### # Rule Identifier: # efs_encrypted_check # # Description: # This control checks whether an Amazon Elastic File System (Amazon EFS) file system is configured to encrypt file data using AWS KMS. # # Reports on: # AWS::EFS::FileSystem # # 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 Amazon EFS file system resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS file system resource # And: 'Encrypted' is not present # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS file system resource # And: 'Encrypted' is present and set to bool(false) # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS file system resource # And: 'Encrypted' is present and set to bool(true) # Then: PASS # # Constants # let RESOURCE_TYPE = "AWS::EFS::FileSystem" let INPUT_DOCUMENT = this # # Assignments # let efs_file_systems = Resources.*[ Type == %RESOURCE_TYPE ] # # Primary Rules # rule efs_encrypted_check when is_cfn_template(%INPUT_DOCUMENT) %efs_file_systems not empty { check(%efs_file_systems.Properties) << [CT.ELASTICFILESYSYSTEM.PR.1]: Require an Amazon EFS file system to encrypt file data at rest using AWS KMS [FIX]: Set 'Encrypted' to 'true' and optionally set 'KmsKeyId' to a valid AWS KMS key identifier. >> } rule efs_encrypted_check when is_cfn_hook(%INPUT_DOCUMENT, %RESOURCE_TYPE) { check(%INPUT_DOCUMENT.%RESOURCE_TYPE.resourceProperties) << [CT.ELASTICFILESYSYSTEM.PR.1]: Require an Amazon EFS file system to encrypt file data at rest using AWS KMS [FIX]: Set 'Encrypted' to 'true' and optionally set 'KmsKeyId' to a valid AWS KMS key identifier. >> } # # Parameterized Rules # rule check(efs_file_systems) { %efs_file_systems { # Scenario 2 Encrypted exists # Scenario 3 and 4 Encrypted == 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.ELASTICFILESYSTEM.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: EFSFileSystem: Type: AWS::EFS::FileSystem Properties: Encrypted: 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: EFSFileSystem: Type: AWS::EFS::FileSystem Properties: Encrypted: false

[CT.ELASTICFILESYSTEM.PR.2] Exiger qu'un volume Amazon EFS dispose d'un plan de sauvegarde automatique

Ce contrôle vérifie si votre système de fichiers Amazon Elastic File System (Amazon EFS) a été configuré avec des sauvegardes automatiques via AWS Backup.

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

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

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::EFS::FileSystem

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

Détails et exemples

Explication

L'inclusion des systèmes de fichiers Amazon EFS dans les plans de sauvegarde vous permet de protéger vos données contre la suppression et la perte de données.

Corrections en cas de défaillance des règles

Activez les sauvegardes automatiques en BackupPolicy.Status réglant surENABLED.

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

Système de fichiers Amazon EFS - Exemple

Système de fichiers Amazon EFS configuré avec les sauvegardes automatiques activées. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "EFSFileSystem": { "Type": "AWS::EFS::FileSystem", "Properties": { "BackupPolicy": { "Status": "ENABLED" } } } }

Exemple YAML

EFSFileSystem: Type: AWS::EFS::FileSystem Properties: BackupPolicy: Status: ENABLED

CT.ELASTICFILESYSTEM.PR.2spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # efs_automatic_backups_enabled_check # # Description: # This control checks whether your Amazon Elastic File System (Amazon EFS) file system has been configured with automatic backups through AWS Backup. # # Reports on: # AWS::EFS::FileSystem # # 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 Amazon EFS file system resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS file system resource # And: 'BackupPolicy' is not present # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS file system resource # And: 'BackupPolicy' is present and 'Status' is set to 'DISABLED' # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS file system resource # And: 'BackupPolicy' is present and 'Status' is set to 'ENABLED' # Then: PASS # # Constants # let RESOURCE_TYPE = "AWS::EFS::FileSystem" let INPUT_DOCUMENT = this # # Assignments # let efs_file_systems = Resources.*[ Type == %RESOURCE_TYPE ] # # Primary Rules # rule efs_automatic_backups_enabled_check when is_cfn_template(this) %efs_file_systems not empty { check(%efs_file_systems.Properties) << [CT.ELASTICFILESYSYSTEM.PR.2]: Require an Amazon EFS volume to have an automated backup plan [FIX]: Enable automatic backups by setting 'BackupPolicy.Status' to 'ENABLED'. >> } rule efs_automatic_backups_enabled_check when is_cfn_hook(%INPUT_DOCUMENT, %RESOURCE_TYPE) { check(%INPUT_DOCUMENT.%RESOURCE_TYPE.resourceProperties) << [CT.ELASTICFILESYSYSTEM.PR.2]: Require an Amazon EFS volume to have an automated backup plan [FIX]: Enable automatic backups by setting 'BackupPolicy.Status' to 'ENABLED'. >> } # # Parameterized Rules # rule check(efs_file_systems) { %efs_file_systems { # Scenario 2 BackupPolicy exists BackupPolicy is_struct BackupPolicy { # Scenario 3 and 4 Status exists Status == "ENABLED" } } } # # 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.ELASTICFILESYSTEM.PR.2exemples 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: EFSFileSystem: Type: AWS::EFS::FileSystem Properties: BackupPolicy: Status: ENABLED

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

Resources: EFSFileSystem: Type: AWS::EFS::FileSystem Properties: BackupPolicy: Status: DISABLED

[CT.ELASTICFILESYSTEM.PR.3] Exiger que les points d'accès Amazon EFS aient un répertoire racine

Ce contrôle vérifie si vos points d'accès Amazon Elastic File System (Amazon EFS) sont configurés pour appliquer un répertoire racine.

  • Objectif de contrôle : appliquer le moindre privilège

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

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::EFS::AccessPoint

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

Détails et exemples

Explication

Lorsque vous appliquez un répertoire racine, le client NFS du point d'accès utilise le répertoire racine configuré sur le point d'accès, au lieu du répertoire racine du système de fichiers. L'application d'un répertoire racine pour un point d'accès permet de restreindre l'accès aux données en garantissant que les utilisateurs du point d'accès ne peuvent accéder qu'aux fichiers du sous-répertoire spécifié.

Corrections en cas de défaillance des règles

Fournissez une RootDirectory.Path configuration dont la valeur Path n'est pas égale/.

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

Point d'accès Amazon EFS : exemple

Point d'accès Amazon EFS configuré avec un répertoire racine défini sur un sous-répertoire spécifique. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "EFSAccessPoint": { "Type": "AWS::EFS::AccessPoint", "Properties": { "FileSystemId": { "Ref": "EFSFileSystem" }, "RootDirectory": { "Path": "/dir1/child1" } } } }

Exemple YAML

EFSAccessPoint: Type: AWS::EFS::AccessPoint Properties: FileSystemId: !Ref 'EFSFileSystem' RootDirectory: Path: /dir1/child1

CT.ELASTICFILESYSTEM.PR.3spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # efs_access_point_enforce_root_directory_check # # Description: # This control checks whether your Amazon Elastic File System (Amazon EFS) access points are configured to enforce a root directory. # # Reports on: # AWS::EFS::AccessPoint # # 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 Amazon EFS access point resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS access point resource # And: 'RootDirectory' 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 an Amazon EFS access point resource # And: 'RootDirectory' has been provided # And: 'Path' within 'RootDirectory' has not been provided or has been provided with an empty string value # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS access point resource # And: 'RootDirectory' has been provided # And: 'Path' within 'RootDirectory' been provided with a value of '/' # Then: FAIL # Scenario: 5 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS access point resource # And: 'RootDirectory' has been provided # And: 'Path' within 'RootDirectory' been provided with a non-empty string value not equal to '/' # Then: PASS # # Constants # let EFS_ACCESS_POINT_TYPE = "AWS::EFS::AccessPoint" let INPUT_DOCUMENT = this # # Assignments # let efs_access_points = Resources.*[ Type == %EFS_ACCESS_POINT_TYPE ] # # Primary Rules # rule efs_access_point_enforce_root_directory_check when is_cfn_template(%INPUT_DOCUMENT) %efs_access_points not empty { check(%efs_access_points.Properties) << [CT.ELASTICFILESYSYSTEM.PR.3]: Require Amazon EFS access points to have a root directory [FIX]: Provide a 'RootDirectory.Path' configuration with a value for 'Path' that does not equal '/'. >> } rule efs_access_point_enforce_root_directory_check when is_cfn_hook(%INPUT_DOCUMENT, %EFS_ACCESS_POINT_TYPE) { check(%INPUT_DOCUMENT.%EFS_ACCESS_POINT_TYPE.resourceProperties) << [CT.ELASTICFILESYSYSTEM.PR.3]: Require Amazon EFS access points to have a root directory [FIX]: Provide a 'RootDirectory.Path' configuration with a value for 'Path' that does not equal '/'. >> } # # Parameterized Rules # rule check(efs_access_points) { %efs_access_points { # Scenario 2 RootDirectory exists RootDirectory { # Scenario 3,4 and 5 Path exists check_is_string_and_not_empty(Path) Path != "/" } } } # # 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 } rule check_is_string_and_not_empty(value) { %value { this is_string this != /\A\s*\z/ } }

CT.ELASTICFILESYSTEM.PR.3exemples 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: EFSAccessPoint: Type: AWS::EFS::AccessPoint Properties: FileSystemId: Ref: EFSFileSystem RootDirectory: Path: /dir1/child1 EFSFileSystem: Type: AWS::EFS::FileSystem Properties: {}

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

Resources: EFSAccessPoint: Type: AWS::EFS::AccessPoint Properties: FileSystemId: Ref: EFSFileSystem RootDirectory: Path: / EFSFileSystem: Type: AWS::EFS::FileSystem Properties: {}

[CT.ELASTICFILESYSTEM.PR.4] Exiger des points d'accès Amazon EFS pour renforcer l'identité d'un utilisateur

Ce contrôle vérifie si vos points d'accès Amazon Elastic File System (Amazon EFS) sont configurés pour appliquer une identité utilisateur.

  • Objectif de contrôle : appliquer le moindre privilège

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

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::EFS::AccessPoint

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

Détails et exemples

Explication

Les points d'accès Amazon EFS sont des points d'entrée spécifiques à une application dans un système de fichiers Amazon EFS qui facilitent la gestion de l'accès des applications aux ensembles de données partagés. Les points d'accès peuvent appliquer de manière forcée une identité d'utilisateur, y compris les groupes POSIX de l'utilisateur, pour toutes les demandes de système de fichiers effectuées via le point d'accès. Les points d'accès peuvent également imposer un répertoire racine différent pour le système de fichiers, afin que les clients n'aient accès qu'aux données du répertoire spécifié ou de ses sous-répertoires.

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

Fournissez une PosixUser configuration avec un ID utilisateur POSIX (Uid) et un ID de groupe POSIX (Gid).

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

Point d'accès Amazon EFS : exemple

Le point d'accès Amazon EFS est configuré pour appliquer une identité utilisateur à toutes les demandes de système de fichiers effectuées via le point d'accès. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "EFSAccessPoint": { "Type": "AWS::EFS::AccessPoint", "Properties": { "FileSystemId": { "Ref": "EFSFileSystem" }, "PosixUser": { "Uid": "111", "Gid": "222" } } } }

Exemple YAML

EFSAccessPoint: Type: AWS::EFS::AccessPoint Properties: FileSystemId: !Ref 'EFSFileSystem' PosixUser: Uid: '111' Gid: '222'

CT.ELASTICFILESYSTEM.PR.4spécification des règles

# ################################### ## Rule Specification ## ##################################### # Rule Identifier: # efs_access_point_enforce_user_identity_check # # Description: # This control checks whether your Amazon Elastic File System (Amazon EFS) access points are configured to enforce a user identity. # # Reports on: # AWS::EFS::AccessPoint # # 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 Amazon EFS access point resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS access point resource # And: 'PosixUser' 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 an Amazon EFS access point resource # And: 'PosixUser' has been provided # And: 'Uid' within 'PosixUser' has not been provided or has been provided with an empty string value # And: 'Gid' within 'PosixUser' has not been provided or has been provided with an empty string value # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains an Amazon EFS access point resource # And: 'PosixUser' has been provided # And: 'Uid' within 'PosixUser' has been provided with a non-empty string value # And: 'Gid' within 'PosixUser' has been provided with a non-empty string value # Then: PASS # # Constants # let EFS_ACCESS_POINT_TYPE = "AWS::EFS::AccessPoint" let INPUT_DOCUMENT = this # # Assignments # let efs_access_points = Resources.*[ Type == %EFS_ACCESS_POINT_TYPE ] # # Primary Rules # rule efs_access_point_enforce_user_identity_check when is_cfn_template(this) %efs_access_points not empty { check(%efs_access_points.Properties) << [CT.ELASTICFILESYSYSTEM.PR.4]: Require Amazon EFS access points to enforce a user identity [FIX]: Provide a 'PosixUser' configuration with a POSIX user ID ('Uid') and POSIX group ID ('Gid'). >> } rule efs_access_point_enforce_user_identity_check when is_cfn_hook(%INPUT_DOCUMENT, %EFS_ACCESS_POINT_TYPE) { check(%INPUT_DOCUMENT.%EFS_ACCESS_POINT_TYPE.resourceProperties) << [CT.ELASTICFILESYSYSTEM.PR.4]: Require Amazon EFS access points to enforce a user identity [FIX]: Provide a 'PosixUser' configuration with a POSIX user ID ('Uid') and POSIX group ID ('Gid'). >> } # # Parameterized Rules # rule check(efs_access_points) { %efs_access_points { # Scenario 2 PosixUser exists PosixUser { # Scenario 3 and 4 Uid exists check_is_string_and_not_empty(Uid) Gid exists check_is_string_and_not_empty(Gid) } } } # # 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 } rule check_is_string_and_not_empty(value) { %value { this is_string this != /\A\s*\z/ } }

CT.ELASTICFILESYSTEM.PR.4exemples 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: EFSAccessPoint: Type: AWS::EFS::AccessPoint Properties: FileSystemId: Ref: EFSFileSystem PosixUser: Uid: '111' Gid: '222' EFSFileSystem: Type: AWS::EFS::FileSystem Properties: {}

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

Resources: EFSAccessPoint: Type: AWS::EFS::AccessPoint Properties: FileSystemId: Ref: EFSFileSystem EFSFileSystem: Type: AWS::EFS::FileSystem Properties: {}