View a markdown version of this page

Sécurité dans AWS AppConfig - AWS AppConfig

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.

Sécurité dans AWS AppConfig

La sécurité du cloud AWS est la priorité absolue. En tant que AWS client, vous bénéficiez d'un centre de données et d'une architecture réseau conçus pour répondre aux exigences des organisations les plus sensibles en matière de sécurité.

La sécurité est une responsabilité partagée entre vous AWS et vous. Le modèle de responsabilité partagée décrit ceci comme la sécurité du cloud et la sécurité dans le cloud :

  • Sécurité du cloud  : AWS est responsable de la protection de l'infrastructure qui exécute AWS les services dans le AWS Cloud. AWS vous fournit également des services que vous pouvez utiliser en toute sécurité. Third-party les auditeurs testent et vérifient régulièrement l'efficacité de notre sécurité dans le AWS cadre des programmes de . Pour en savoir plus sur les programmes de conformité qui s'appliquent à AWS Systems Manager, voir AWS Services inclus par programme de conformité .

  • Sécurité dans le cloud — Votre responsabilité est déterminée par le AWS service que vous utilisez. Vous êtes également responsable d’autres facteurs, y compris de la sensibilité de vos données, des exigences de votre entreprise, ainsi que de la législation et de la réglementation applicables.

AWS AppConfig est un outil dans AWS Systems Manager. Pour comprendre comment appliquer le modèle de responsabilité partagée lors de l'utilisation AWS AppConfig, voir Sécurité dans AWS Systems Manager. Cette section décrit comment configurer Systems Manager pour répondre aux objectifs de sécurité et de conformité de AWS AppConfig.

Implémentation d’un accès sur la base du moindre privilège

En tant que meilleure pratique en matière de sécurité, accordez les autorisations minimales requises aux identités pour effectuer des actions spécifiques sur des ressources spécifiques dans des conditions spécifiques. AWS AppConfig L'agent propose deux fonctionnalités qui lui permettent d'accéder au système de fichiers d'une instance ou d'un conteneur : la sauvegarde et l'écriture sur disque. Si vous activez ces fonctionnalités, vérifiez que seul l' AWS AppConfig agent est autorisé à écrire dans les fichiers de configuration désignés du système de fichiers. Vérifiez également que seuls les processus nécessaires à la lecture de ces fichiers de configuration sont en mesure de le faire. L’implémentation d’un accès sur la base du moindre privilège est fondamentale pour réduire les risques en matière de sécurité et l’impact que pourraient avoir des d’erreurs ou des actes de malveillance.

Pour plus d'informations sur la mise en œuvre de l'accès au moindre privilège, voir SEC03-BP02 Accorder l'accès au moindre privilège dans le Guide de AWS Well-Architected Tool l'utilisateur. Pour plus d'informations sur les fonctionnalités de l' AWS AppConfig agent mentionnées dans cette section, consultezUtilisation d'un manifeste pour activer des fonctionnalités de récupération supplémentaires.

Chiffrement des données au repos pour AWS AppConfig

AWS AppConfig fournit un cryptage par défaut pour protéger les données des clients au repos lors de l'utilisation Clés détenues par AWS.

Clés détenues par AWS— AWS AppConfig utilise ces clés par défaut pour chiffrer automatiquement les données déployées par le service et hébergées dans le magasin de AWS AppConfig données. Vous ne pouvez pas consulter, gérer Clés détenues par AWS, utiliser ou auditer leur utilisation. Toutefois, vous n’avez pas besoin de prendre de mesure ou de modifier les programmes pour protéger les clés qui chiffrent vos données. Pour plus d’informations, consultez Clés détenues par AWS dans le Guide du développeur AWS Key Management Service .

Bien que vous ne puissiez pas désactiver cette couche de chiffrement ou sélectionner un autre type de cryptage, vous pouvez spécifier une clé gérée par le client à utiliser lorsque vous enregistrez les données de configuration hébergées dans le magasin de AWS AppConfig données et lorsque vous déployez vos données de configuration.

Clés gérées par le client  : AWS AppConfig prend en charge l'utilisation d'une clé gérée par le client symétrique que vous créez, possédez et gérez pour ajouter une deuxième couche de cryptage par rapport à la clé existante Clé détenue par AWS. Étant donné que vous avez le contrôle total de cette couche de chiffrement, vous pouvez effectuer les tâches suivantes :

  • Établir et maintenir des politiques et des subventions clés

  • Établissement et gestion des politiques IAM

  • Activation et désactivation des stratégies de clé

  • Rotation des matériaux de chiffrement de clé

  • Ajout de balises

  • Création d’alias de clé

  • Planification des clés pour la suppression

Pour plus d'informations, consultez la section Clé gérée par le client dans le Guide du AWS Key Management Service développeur.

AWS AppConfig prend en charge les clés gérées par le client

AWS AppConfig propose une assistance pour le chiffrement des clés gérées par le client pour les données de configuration. Pour les versions de configuration enregistrées dans le magasin de données AWS AppConfig hébergé, les clients peuvent définir un KmsKeyIdentifier sur le profil de configuration correspondant. Chaque fois qu'une nouvelle version des données de configuration est créée à l'aide de l'opération CreateHostedConfigurationVersion API, une clé de AWS KMS données est AWS AppConfig générée KmsKeyIdentifier à partir du pour chiffrer les données avant de les stocker. Lors d'un accès ultérieur aux données, soit pendant les opérations de l'API, soit pendant les GetHostedConfigurationVersion opérations d'StartDeploymentAPI, AWS AppConfig déchiffre les données de configuration à l'aide des informations relatives à la clé de données générée.

AWS AppConfig propose également une assistance pour le chiffrement des clés gérées par le client pour les données de configuration déployées. Pour chiffrer les données de configuration, les clients peuvent fournir une information KmsKeyIdentifier à leur déploiement. AWS AppConfig génère la clé de AWS KMS données avec celle-ci KmsKeyIdentifier pour crypter les données relatives à l'opération de l'StartDeploymentAPI.

AWS AppConfig accès au chiffrement

Lorsque vous créez une clé gérée par le client, appliquez la politique de clé suivante pour vous assurer que la clé peut être utilisée.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ] }

Pour chiffrer les données de configuration hébergées à l'aide d'une clé gérée par le client, l'appel d'identité CreateHostedConfigurationVersion a besoin de la déclaration de politique suivante, qui peut être attribuée à un utilisateur, un groupe ou un rôle :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID" } ] }

Si vous utilisez un secret de Secrets Manager ou toute autre donnée de configuration chiffrée à l'aide d'une clé gérée par le client, vous retrievalRoleArn kms:Decrypt devrez déchiffrer et récupérer les données.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID" } ] }

Lors de l'appel de l'opération AWS AppConfig StartDeployment API, l'appel d'identité StartDeployment nécessite la politique IAM suivante, qui peut être attribuée à un utilisateur, un groupe ou un rôle :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID" } ] }

Lors de l'appel de l'opération AWS AppConfig GetLatestConfiguration API, l'appel d'identité GetLatestConfiguration nécessite la politique suivante qui peut être attribuée à un utilisateur, un groupe ou un rôle :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-ID" } ] }

Contexte de chiffrement

Un contexte de chiffrement est un ensemble facultatif de paires clé-valeur qui contient des informations contextuelles supplémentaires sur les données.

AWS KMS utilise le contexte de chiffrement en tant que données authentifiées supplémentaires pour prendre en charge le chiffrement authentifié. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, AWS KMS lie le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez inclure le même contexte de chiffrement dans la demande.

AWS AppConfig contexte de chiffrement  : AWS AppConfig utilise un contexte de chiffrement dans toutes les opérations AWS KMS cryptographiques pour les données de configuration hébergées et les déploiements chiffrés. Le contexte contient une clé correspondant au type de données et une valeur qui identifie l'élément de données spécifique.

Surveillance de vos clés de chiffrement pour AWS

Lorsque vous utilisez les clés gérées par un AWS KMS client avec AWS AppConfig, vous pouvez utiliser AWS CloudTrail ou Amazon CloudWatch Logs pour suivre les demandes AWS AppConfig envoyées à AWS KMS.

L'exemple suivant est un CloudTrail événement destiné Decrypt à surveiller les AWS KMS opérations appelées pour accéder AWS AppConfig aux données chiffrées par la clé gérée par votre client :

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "appconfig.amazonaws.com" }, "eventTime": "2023-01-03T02:22:28z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "Region", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:appconfig:deployment:arn": "arn:aws:appconfig:Region:account_ID:application/application_ID/environment/environment_ID/deployment/deployment_ID" }, "keyId": "arn:aws:kms:Region:account_ID:key/key_ID", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "account_ID", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:Region:account_ID:key_ID" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "account_ID", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }

Accès AWS AppConfig en utilisant un point de terminaison d'interface (AWS PrivateLink)

Vous pouvez l'utiliser AWS PrivateLink pour créer une connexion privée entre votre VPC et AWS AppConfig. Vous pouvez y accéder AWS AppConfig comme s'il se trouvait dans votre VPC, sans utiliser de passerelle Internet, de périphérique NAT, de connexion VPN ou de Direct Connect connexion. Les instances de votre VPC n'ont pas besoin d'adresses IP publiques pour y accéder AWS AppConfig.

Vous établissez cette connexion privée en créant un point de terminaison d’interface optimisé par AWS PrivateLink. Nous créons une interface réseau de point de terminaison dans chaque sous-réseau que vous activez pour le point de terminaison d’interface. Il s'agit d'interfaces réseau gérées par le demandeur qui servent de point d'entrée pour le trafic destiné à AWS AppConfig.

Pour plus d’informations, consultez Accès aux Services AWS via AWS PrivateLink dans le Guide AWS PrivateLink .

Considérations pour AWS AppConfig

Avant de configurer un point de terminaison d'interface pour AWS AppConfig, consultez les considérations du AWS PrivateLink Guide.

AWS AppConfig permet de passer des appels vers les appconfigdata services appconfig et via le point de terminaison de l'interface.

Créer un point de terminaison d'interface pour AWS AppConfig

Vous pouvez créer un point de terminaison d'interface pour AWS AppConfig utiliser la console Amazon VPC ou le AWS Command Line Interface (AWS CLI). Pour plus d’informations, consultez Création d’un point de terminaison d’interface dans le Guide AWS PrivateLink .

Créez un point de terminaison d'interface pour AWS AppConfig utiliser les noms de service suivants :

com.amazonaws.region.appconfig
com.amazonaws.region.appconfigdata

Si vous activez le DNS privé pour le point de terminaison de l'interface, vous pouvez envoyer des requêtes d'API à AWS AppConfig l'aide de son nom DNS régional par défaut. Par exemple : appconfig.us-east-1.amazonaws.com et appconfigdata.us-east-1.amazonaws.com.

Création d’une politique de point de terminaison pour votre point de terminaison d’interface

Une politique de point de terminaison est une ressource IAM que vous pouvez attacher à votre point de terminaison d’interface. La politique de point de terminaison par défaut autorise un accès complet AWS AppConfig via le point de terminaison de l'interface. Pour contrôler l'accès autorisé AWS AppConfig depuis votre VPC, associez une politique de point de terminaison personnalisée au point de terminaison de l'interface.

Une politique de point de terminaison spécifie les informations suivantes :

  • Les principaux qui peuvent effectuer des actions (Comptes AWS, utilisateurs IAM et rôles IAM).

  • Les actions qui peuvent être effectuées.

  • La ressource sur laquelle les actions peuvent être effectuées.

Pour plus d’informations, consultez Contrôle de l’accès aux services à l’aide de politiques de point de terminaison dans le Guide AWS PrivateLink .

Exemple : politique relative aux terminaux VPC pour AWS AppConfig actions

Voici un exemple de politique de point de terminaison. Lorsque vous attachez cette politique à votre point de terminaison d'interface, elle accorde l'accès aux actions AWS AppConfig répertoriées pour tous les principaux sur toutes les ressources.

{ "Statement": [ { "Principal": "*", "Effect": "Allow", "Action": [ "appconfig:CreateApplication", "appconfig:CreateEnvironment", "appconfig:CreateConfigurationProfile", "appconfig:StartDeployment", "appconfig:GetLatestConfiguration", "appconfig:StartConfigurationSession" ], "Resource":"*" } ] }

Rotation des touches de Secrets Manager

Cette section décrit les informations de sécurité importantes concernant AWS AppConfig l'intégration à Secrets Manager. Pour plus d'informations sur Secrets Manager, consultez Qu'est-ce que c'est AWS Secrets Manager ? dans le Guide de AWS Secrets Manager l'utilisateur.

Configuration de la rotation automatique des secrets de Secrets Manager déployés par AWS AppConfig

La rotation est le processus de mise à jour périodique d'un secret stocké dans Secrets Manager. Lorsque vous effectuez une rotation de secret, vous mettez à jour les informations d'identification dans le secret et dans la base de données ou le service. Vous pouvez configurer la rotation automatique des secrets dans Secrets Manager à l'aide d'une AWS Lambda fonction permettant de mettre à jour le secret et la base de données. Pour plus d'informations, consultez la section Rotation AWS Secrets Manager des secrets dans le Guide de AWS Secrets Manager l'utilisateur.

Pour activer la rotation des touches des secrets Secrets Manager déployés par AWS AppConfig, mettez à jour votre fonction Lambda de rotation et déployez le secret pivoté.

Note

Déployez votre profil de AWS AppConfig configuration après la rotation de votre secret et sa mise à jour complète vers la nouvelle version. Vous pouvez déterminer si le secret a subi une rotation parce que son statut VersionStage passe de AWSPENDING àAWSCURRENT. L'achèvement de la rotation des secrets s'effectue dans la finish_secret fonction Modèles de rotation de Secrets Manager.

Voici un exemple de fonction qui démarre un AWS AppConfig déploiement après la rotation d'un secret.

import time import boto3 client = boto3.client('appconfig') def finish_secret(service_client, arn, new_version): """Finish the rotation by marking the pending secret as current This method finishes the secret rotation by staging the secret staged AWSPENDING with the AWSCURRENT stage. Args: service_client (client): The secrets manager service client arn (string): The secret ARN or other identifier new_version (string): The new version to be associated with the secret """ # First describe the secret to get the current version metadata = service_client.describe_secret(SecretId=arn) current_version = None for version in metadata["VersionIdsToStages"]: if "AWSCURRENT" in metadata["VersionIdsToStages"][version]: if version == new_version: # The correct version is already marked as current, return logger.info("finishSecret: Version %s already marked as AWSCURRENT for %s" % (version, arn)) return current_version = version break # Finalize by staging the secret version current service_client.update_secret_version_stage(SecretId=arn, VersionStage="AWSCURRENT", MoveToVersionId=new_version, RemoveFromVersionId=current_version) # Deploy rotated secret response = client.start_deployment( ApplicationId='TestApp', EnvironmentId='TestEnvironment', DeploymentStrategyId='TestStrategy', ConfigurationProfileId='ConfigurationProfileId', ConfigurationVersion=new_version, KmsKeyIdentifier=key, Description='Deploy secret rotated at ' + str(time.time()) ) logger.info("finishSecret: Successfully set AWSCURRENT stage to version %s for secret %s." % (new_version, arn))