

La AWS SDK pour .NET V3 est passée en mode maintenance.

Nous vous recommandons de migrer vers la version [AWS SDK pour .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Pour plus de détails et d'informations sur la façon de migrer, veuillez consulter notre [annonce relative au mode de maintenance](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

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é de ce AWS produit ou service
<a name="security"></a>

Chez Amazon Web Services (AWS), la sécurité dans le cloud est la priorité principale. En tant que client AWS , 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 pointilleuses sur la sécurité. La sécurité est une responsabilité partagée entre vous AWS et vous. Le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) décrit cela comme la sécurité du cloud et la sécurité dans le cloud.

**Sécurité du cloud** : AWS est chargée de protéger l'infrastructure qui exécute tous les services proposés dans le AWS cloud et de vous fournir des services que vous pouvez utiliser en toute sécurité. Notre responsabilité en matière de sécurité est notre priorité absolue AWS, et l'efficacité de notre sécurité est régulièrement testée et vérifiée par des auditeurs tiers dans le cadre des [programmes de AWS conformité](https://aws.amazon.com/compliance/programs/).

**Sécurité dans le cloud** — Votre responsabilité est déterminée par le AWS service que vous utilisez et par d'autres facteurs, notamment la sensibilité de vos données, les exigences de votre organisation et les lois et réglementations applicables.

Ce AWS produit ou service suit le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) par le biais des services Amazon Web Services (AWS) spécifiques qu'il prend en charge. Pour obtenir des informations sur la sécurité des AWS services, consultez la [AWS page de documentation sur la sécuritéAWS](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) [des services et les services concernés par les efforts de AWS conformité par programme de conformité](https://aws.amazon.com/compliance/services-in-scope/).

**Topics**
+ [Protection des données](data-protection.md)
+ [Gestion de l’identité et des accès](security-iam.md)
+ [Validation de la conformité](compliance-validation.md)
+ [Résilience](disaster-recovery-resiliency.md)
+ [Sécurité de l’infrastructure](infrastructure-security.md)
+ [Application d’une version minimale de TLS](enforcing-tls.md)
+ [Migration du client de chiffrement S3 (V1 vers V2)](s3-encryption-migration-v1-v2.md)
+ [Migration du client de chiffrement S3 (V2 vers V4)](s3-encryption-migration-v2-v4.md)

# Protection des données dans ce AWS produit ou service
<a name="data-protection"></a>

Le [modèle de responsabilité AWS partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) de s'applique à la protection des données dans ce AWS produit ou service. Comme décrit dans ce modèle, AWS est chargé de protéger l'infrastructure mondiale qui gère tous les AWS Cloud. La gestion du contrôle de votre contenu hébergé sur cette infrastructure relève de votre responsabilité. Vous êtes également responsable des tâches de configuration et de gestion de la sécurité des Services AWS que vous utilisez. Pour plus d’informations sur la confidentialité des données, consultez [Questions fréquentes (FAQ) sur la confidentialité des données](https://aws.amazon.com/compliance/data-privacy-faq/). Pour en savoir plus sur la protection des données en Europe, consultez le billet de blog [Modèle de responsabilité partagée d’AWS et RGPD (Règlement général sur la protection des données)](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) sur le *Blog de sécuritéAWS *.

À des fins de protection des données, nous vous recommandons de protéger les Compte AWS informations d'identification et de configurer les utilisateurs individuels avec AWS IAM Identity Center ou Gestion des identités et des accès AWS (IAM). Ainsi, chaque utilisateur se voit attribuer uniquement les autorisations nécessaires pour exécuter ses tâches. Nous vous recommandons également de sécuriser vos données comme indiqué ci-dessous :
+ Utilisez l’authentification multifactorielle (MFA) avec chaque compte.
+  SSL/TLS À utiliser pour communiquer avec AWS les ressources. Nous exigeons TLS 1.2 et recommandons TLS 1.3.
+ Configurez l'API et la journalisation de l'activité des utilisateurs avec AWS CloudTrail. Pour plus d'informations sur l'utilisation des CloudTrail sentiers pour capturer AWS des activités, consultez la section [Utilisation des CloudTrail sentiers](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) dans le *guide de AWS CloudTrail l'utilisateur*.
+ Utilisez des solutions de AWS chiffrement, ainsi que tous les contrôles de sécurité par défaut qu'ils contiennent Services AWS.
+ Utilisez des services de sécurité gérés avancés tels qu’Amazon Macie, qui contribuent à la découverte et à la sécurisation des données sensibles stockées dans Amazon S3.
+ Si vous avez besoin de modules cryptographiques validés par la norme FIPS 140-3 pour accéder AWS via une interface de ligne de commande ou une API, utilisez un point de terminaison FIPS. Pour plus d’informations sur les points de terminaison FIPS disponibles, consultez [Norme FIPS (Federal Information Processing Standard) 140-3](https://aws.amazon.com/compliance/fips/).

Nous vous recommandons fortement de ne jamais placer d’informations confidentielles ou sensibles, telles que les adresses e-mail de vos clients, dans des balises ou des champs de texte libre tels que le champ **Nom**. Cela inclut lorsque vous travaillez avec ce AWS produit ou service ou un autre à Services AWS l'aide de la console, de l'API ou AWS SDKs. AWS CLI Toutes les données que vous entrez dans des balises ou des champs de texte de forme libre utilisés pour les noms peuvent être utilisées à des fins de facturation ou dans les journaux de diagnostic. Si vous fournissez une adresse URL à un serveur externe, nous vous recommandons fortement de ne pas inclure d’informations d’identification dans l’adresse URL permettant de valider votre demande adressée à ce serveur.

# Gestion de l’identité et des accès
<a name="security-iam"></a>

Gestion des identités et des accès AWS (IAM) est un outil Service AWS qui permet à un administrateur de contrôler en toute sécurité l'accès aux AWS ressources. Les administrateurs IAM contrôlent qui peut être *authentifié* (connecté) et *autorisé (autorisé*) à utiliser AWS les ressources. IAM est un Service AWS outil que vous pouvez utiliser sans frais supplémentaires.

**Topics**
+ [Public ciblé](#security_iam_audience)
+ [Authentification par des identités](#security_iam_authentication)
+ [Gestion de l’accès à l’aide de politiques](#security_iam_access-manage)
+ [Comment Services AWS travailler avec IAM](#security_iam_service-with-iam)
+ [Résolution des problèmes AWS d'identité et d'accès](#security_iam_troubleshoot)

## Public ciblé
<a name="security_iam_audience"></a>

La façon dont vous utilisez Gestion des identités et des accès AWS (IAM) varie en fonction du travail que vous effectuez. AWS

**Utilisateur du service** : si vous avez l' Services AWS habitude de faire votre travail, votre administrateur vous fournit les informations d'identification et les autorisations dont vous avez besoin. Au fur et à mesure que vous utilisez de nouvelles AWS fonctionnalités pour effectuer votre travail, vous aurez peut-être besoin d'autorisations supplémentaires. Si vous comprenez bien la gestion des accès, vous saurez demander les autorisations appropriées à votre administrateur. Si vous ne pouvez pas accéder à une fonctionnalité dans AWS, consultez [Résolution des problèmes AWS d'identité et d'accès](#security_iam_troubleshoot) le guide de l'utilisateur du Service AWS que vous utilisez.

**Administrateur du service** — Si vous êtes responsable des AWS ressources de votre entreprise, vous avez probablement un accès complet à AWS. C'est à vous de déterminer les AWS fonctionnalités et les ressources auxquelles les utilisateurs de votre service doivent accéder. Vous devez ensuite soumettre les demandes à votre administrateur IAM pour modifier les autorisations des utilisateurs de votre service. Consultez les informations sur cette page pour comprendre les concepts de base d’IAM. Pour en savoir plus sur la façon dont votre entreprise peut utiliser IAM avec AWS, consultez le guide de l'utilisateur Service AWS que vous utilisez.

**Administrateur IAM** – Si vous êtes un administrateur IAM, vous souhaiterez peut-être en savoir plus sur la façon d’écrire des politiques pour gérer l’accès à AWS. Pour consulter des exemples de politiques AWS basées sur l'identité que vous pouvez utiliser dans IAM, consultez le guide de l'utilisateur Service AWS que vous utilisez.

## Authentification par des identités
<a name="security_iam_authentication"></a>

L'authentification est la façon dont vous vous connectez à AWS l'aide de vos informations d'identification. Vous devez être authentifié en tant qu'utilisateur IAM ou en assumant un rôle IAM. Utilisateur racine d'un compte AWS

Vous pouvez vous connecter en tant qu'identité fédérée à l'aide d'informations d'identification provenant d'une source d'identité telle que AWS IAM Identity Center (IAM Identity Center), d'une authentification unique ou d'informations d'identification. Google/Facebook Pour plus d’informations sur la connexion, consultez [Connexion à votre Compte AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dans le *Guide de l’utilisateur Connexion à AWS *.

Pour l'accès par programmation, AWS fournit un SDK et une CLI pour signer les demandes de manière cryptographique. Pour plus d’informations, consultez [Signature AWS Version 4 pour les demandes d’API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dans le *Guide de l’utilisateur IAM*.

### Compte AWS utilisateur root
<a name="security_iam_authentication-rootuser"></a>

 Lorsque vous créez un Compte AWS, vous commencez par une seule identité de connexion appelée *utilisateur Compte AWS root* qui dispose d'un accès complet à toutes Services AWS les ressources. Il est vivement déconseillé d’utiliser l’utilisateur racine pour vos tâches quotidiennes. Pour les tâches qui requièrent des informations d’identification de l’utilisateur racine, consultez [Tâches qui requièrent les informations d’identification de l’utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dans le *Guide de l’utilisateur IAM*. 

### Identité fédérée
<a name="security_iam_authentication-federated"></a>

Il est recommandé d'obliger les utilisateurs humains à utiliser la fédération avec un fournisseur d'identité pour accéder à Services AWS l'aide d'informations d'identification temporaires.

Une *identité fédérée* est un utilisateur provenant de l'annuaire de votre entreprise, de votre fournisseur d'identité Web ou Directory Service qui y accède à Services AWS l'aide d'informations d'identification provenant d'une source d'identité. Les identités fédérées assument des rôles qui fournissent des informations d’identification temporaires.

Pour une gestion des accès centralisée, nous vous recommandons d’utiliser AWS IAM Identity Center. Pour plus d’informations, consultez [Qu’est-ce que IAM Identity Center ?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

### Utilisateurs et groupes IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* est une identité qui dispose d’autorisations spécifiques pour une seule personne ou application. Nous vous recommandons d’utiliser ces informations d’identification temporaires au lieu des utilisateurs IAM avec des informations d’identification à long terme. Pour plus d'informations, voir [Exiger des utilisateurs humains qu'ils utilisent la fédération avec un fournisseur d'identité pour accéder à AWS l'aide d'informations d'identification temporaires](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) dans le *guide de l'utilisateur IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) spécifient une collection d’utilisateurs IAM et permettent de gérer plus facilement les autorisations pour de grands ensembles d’utilisateurs. Pour plus d’informations, consultez [Cas d’utilisation pour les utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dans le *Guide de l’utilisateur IAM*.

### Rôles IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* est une identité dotée d’autorisations spécifiques qui fournit des informations d’identification temporaires. Vous pouvez assumer un rôle en [passant d'un rôle d'utilisateur à un rôle IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) ou en appelant une opération d' AWS API AWS CLI ou d'API. Pour plus d’informations, consultez [Méthodes pour endosser un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dans le *Guide de l’utilisateur IAM*.

Les rôles IAM sont utiles pour l’accès des utilisateurs fédérés, les autorisations temporaires des utilisateurs IAM, les accès intercompte, les accès entre services et les applications exécutées sur Amazon EC2. Pour plus d’informations, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

## Gestion de l’accès à l’aide de politiques
<a name="security_iam_access-manage"></a>

Vous contrôlez l'accès en AWS créant des politiques et en les associant à AWS des identités ou à des ressources. Une politique définit les autorisations lorsqu'elles sont associées à une identité ou à une ressource. AWS évalue ces politiques lorsqu'un directeur fait une demande. La plupart des politiques sont stockées AWS sous forme de documents JSON. Pour plus d’informations les documents de politique JSON, consultez [Vue d’ensemble des politiques JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dans le *Guide de l’utilisateur IAM*.

À l’aide de politiques, les administrateurs précisent qui a accès à quoi en définissant quel **principal** peut effectuer des **actions** sur quelles **ressources** et dans quelles **conditions**.

Par défaut, les utilisateurs et les rôles ne disposent d’aucune autorisation. Un administrateur IAM crée des politiques IAM et les ajoute aux rôles, que les utilisateurs peuvent ensuite assumer. Les politiques IAM définissent les autorisations quelle que soit la méthode que vous utilisez pour exécuter l’opération.

### Politiques basées sur l’identité
<a name="security_iam_access-manage-id-based-policies"></a>

Les stratégies basées sur l’identité sont des documents de stratégie d’autorisations JSON que vous attachez à une identité (utilisateur, groupe ou rôle). Ces politiques contrôlent les actions que peuvent exécuter ces identités, sur quelles ressources et dans quelles conditions. Pour découvrir comment créer une politique basée sur l’identité, consultez [Définition d’autorisations IAM personnalisées avec des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l’utilisateur IAM*.

Les politiques basées sur l’identité peuvent être des *politiques intégrées* (intégrées directement dans une seule identité) ou des *politiques gérées (politiques* autonomes associées à plusieurs identités). Pour découvrir comment choisir entre des politiques gérées et en ligne, consultez [Choix entre les politiques gérées et les politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dans le *Guide de l’utilisateur IAM*.

### Politiques basées sur les ressources
<a name="security_iam_access-manage-resource-based-policies"></a>

Les politiques basées sur les ressources sont des documents de politique JSON que vous attachez à une ressource. Les exemples incluent *les politiques de confiance de rôle* IAM et les *stratégies de compartiment* Amazon S3. Dans les services qui sont compatibles avec les politiques basées sur les ressources, les administrateurs de service peuvent les utiliser pour contrôler l’accès à une ressource spécifique. Vous devez [spécifier un principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dans une politique basée sur les ressources.

Les politiques basées sur les ressources sont des politiques en ligne situées dans ce service. Vous ne pouvez pas utiliser les politiques AWS gérées par IAM dans une stratégie basée sur les ressources.

### Listes de contrôle d'accès (ACLs)
<a name="security_iam_access-manage-acl"></a>

Les listes de contrôle d'accès (ACLs) contrôlent les principaux (membres du compte, utilisateurs ou rôles) autorisés à accéder à une ressource. ACLs sont similaires aux politiques basées sur les ressources, bien qu'elles n'utilisent pas le format de document de politique JSON.

Amazon S3 et AWS WAF Amazon VPC sont des exemples de services compatibles. ACLs Pour en savoir plus ACLs, consultez la [présentation de la liste de contrôle d'accès (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) dans le *guide du développeur Amazon Simple Storage Service*.

### Autres types de politique
<a name="security_iam_access-manage-other-policies"></a>

AWS prend en charge des types de politiques supplémentaires qui peuvent définir les autorisations maximales accordées par les types de politiques les plus courants :
+ **Limites d’autorisations** : une limite des autorisations définit le nombre maximum d’autorisations qu’une politique basée sur l’identité peut accorder à une entité IAM. Pour plus d’informations, consultez [Limites d’autorisations pour des entités IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dans le *Guide de l’utilisateur IAM*.
+ **Politiques de contrôle des services (SCPs)** — Spécifiez les autorisations maximales pour une organisation ou une unité organisationnelle dans AWS Organizations. Pour plus d’informations, consultez [Politiques de contrôle de service](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dans le *Guide de l’utilisateur AWS Organizations *.
+ **Politiques de contrôle des ressources (RCPs)** : définissez le maximum d'autorisations disponibles pour les ressources de vos comptes. Pour plus d'informations, voir [Politiques de contrôle des ressources (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) dans le *guide de AWS Organizations l'utilisateur*.
+ **Politiques de session** : politiques avancées que vous passez en tant que paramètre lorsque vous créez par programmation une session temporaire pour un rôle ou un utilisateur fédéré. Pour plus d’informations, consultez [Politiques de session](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dans le *Guide de l’utilisateur IAM*.

### Plusieurs types de politique
<a name="security_iam_access-manage-multiple-policies."></a>

Lorsque plusieurs types de politiques s’appliquent à la requête, les autorisations en résultant sont plus compliquées à comprendre. Pour savoir comment AWS déterminer s'il faut autoriser une demande lorsque plusieurs types de politiques sont impliqués, consultez la section [Logique d'évaluation des politiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) dans le *guide de l'utilisateur IAM*.

## Comment Services AWS travailler avec IAM
<a name="security_iam_service-with-iam"></a>

Pour obtenir une vue d'ensemble du Services AWS fonctionnement de la plupart des fonctionnalités IAM, consultez les [AWS services compatibles avec IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dans le guide de l'utilisateur *IAM*.

Pour savoir comment utiliser un service spécifique Service AWS avec IAM, consultez la section relative à la sécurité du guide de l'utilisateur du service concerné.

## Résolution des problèmes AWS d'identité et d'accès
<a name="security_iam_troubleshoot"></a>

Utilisez les informations suivantes pour vous aider à diagnostiquer et à résoudre les problèmes courants que vous pouvez rencontrer lorsque vous travaillez avec AWS IAM.

**Topics**
+ [Je ne suis pas autorisé à effectuer une action dans AWS](#security_iam_troubleshoot-no-permissions)
+ [Je ne suis pas autorisé à effectuer iam : PassRole](#security_iam_troubleshoot-passrole)
+ [Je souhaite permettre à des personnes extérieures Compte AWS à moi d'accéder à mes AWS ressources](#security_iam_troubleshoot-cross-account-access)

### Je ne suis pas autorisé à effectuer une action dans AWS
<a name="security_iam_troubleshoot-no-permissions"></a>

Si vous recevez une erreur qui indique que vous n’êtes pas autorisé à effectuer une action, vos politiques doivent être mises à jour afin de vous permettre d’effectuer l’action.

L’exemple d’erreur suivant se produit quand l’utilisateur IAM `mateojackson` tente d’utiliser la console pour afficher des informations détaillées sur une ressource `my-example-widget` fictive, mais ne dispose pas des autorisations `awes:GetWidget` fictives.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: awes:GetWidget on resource: my-example-widget
```

Dans ce cas, la politique qui s’applique à l’utilisateur `mateojackson` doit être mise à jour pour autoriser l’accès à la ressource `my-example-widget` à l’aide de l’action `awes:GetWidget`.

Si vous avez besoin d'aide, contactez votre AWS administrateur. Votre administrateur vous a fourni vos informations d’identification de connexion.

### Je ne suis pas autorisé à effectuer iam : PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Si vous recevez une erreur selon laquelle vous n’êtes pas autorisé à exécuter `iam:PassRole` l’action, vos stratégies doivent être mises à jour afin de vous permettre de transmettre un rôle à AWS.

Certains vous Services AWS permettent de transmettre un rôle existant à ce service au lieu de créer un nouveau rôle de service ou un rôle lié à un service. Pour ce faire, vous devez disposer des autorisations nécessaires pour transmettre le rôle au service.

L’exemple d’erreur suivant se produit lorsqu’un utilisateur IAM nommé `marymajor` essaie d’utiliser la console pour exécuter une action dans AWS. Toutefois, l'action nécessite que le service ait des autorisations accordées par une fonction de service. Mary n'est pas autorisée à transmettre le rôle au service.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dans ce cas, les politiques de Mary doivent être mises à jour pour lui permettre d’exécuter l’action `iam:PassRole`.

Si vous avez besoin d'aide, contactez votre AWS administrateur. Votre administrateur vous a fourni vos informations d’identification de connexion.

### Je souhaite permettre à des personnes extérieures Compte AWS à moi d'accéder à mes AWS ressources
<a name="security_iam_troubleshoot-cross-account-access"></a>

Vous pouvez créer un rôle que les utilisateurs provenant d’autres comptes ou les personnes extérieures à votre organisation pourront utiliser pour accéder à vos ressources. Vous pouvez spécifier qui est autorisé à assumer le rôle. Pour les services qui prennent en charge les politiques basées sur les ressources ou les listes de contrôle d'accès (ACLs), vous pouvez utiliser ces politiques pour autoriser les utilisateurs à accéder à vos ressources.

Pour plus d’informations, consultez les éléments suivants :
+ Pour savoir si ces fonctionnalités sont prises AWS en charge, consultez[Comment Services AWS travailler avec IAM](#security_iam_service-with-iam).
+ Pour savoir comment fournir l'accès à vos ressources sur celles Comptes AWS que vous possédez, consultez la section [Fournir l'accès à un utilisateur IAM dans un autre utilisateur Compte AWS que vous possédez](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) dans le Guide de l'*utilisateur IAM*.
+ Pour savoir comment fournir l'accès à vos ressources à des tiers Comptes AWS, consultez la section [Fournir un accès à des ressources Comptes AWS détenues par des tiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dans le *guide de l'utilisateur IAM*.
+ Pour savoir comment fournir un accès par le biais de la fédération d’identité, consultez [Fournir un accès à des utilisateurs authentifiés en externe (fédération d’identité)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dans le *Guide de l’utilisateur IAM*.
+ Pour en savoir plus sur la différence entre l’utilisation des rôles et des politiques basées sur les ressources pour l’accès intercompte, consultez [Accès intercompte aux ressources dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dans le *Guide de l’utilisateur IAM*.

# Validation de conformité pour ce AWS produit ou service
<a name="compliance-validation"></a>

Pour savoir si un [programme Services AWS de conformité Service AWS s'inscrit dans le champ d'application de programmes de conformité](https://aws.amazon.com/compliance/services-in-scope/) spécifiques, consultez Services AWS la section de conformité et sélectionnez le programme de conformité qui vous intéresse. Pour des informations générales, voir Programmes de [AWS conformité Programmes AWS](https://aws.amazon.com/compliance/programs/) de .

Vous pouvez télécharger des rapports d'audit tiers à l'aide de AWS Artifact. Pour plus d'informations, voir [Téléchargement de rapports dans AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Votre responsabilité en matière de conformité lors de l'utilisation Services AWS est déterminée par la sensibilité de vos données, les objectifs de conformité de votre entreprise et les lois et réglementations applicables. Pour plus d'informations sur votre responsabilité en matière de conformité lors de l'utilisation Services AWS, consultez [AWS la documentation de sécurité](https://docs.aws.amazon.com/security/).

Ce AWS produit ou service suit le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) par le biais des services Amazon Web Services (AWS) spécifiques qu'il prend en charge. Pour obtenir des informations sur la sécurité des AWS services, consultez la [AWS page de documentation sur la sécuritéAWS](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) [des services et les services concernés par les efforts de AWS conformité par programme de conformité](https://aws.amazon.com/compliance/services-in-scope/).

# Résilience pour ce AWS produit ou service
<a name="disaster-recovery-resiliency"></a>

L'infrastructure AWS mondiale est construite autour Régions AWS de zones de disponibilité. 

Régions AWS fournissent plusieurs zones de disponibilité physiquement séparées et isolées, connectées par un réseau à faible latence, à haut débit et hautement redondant. 

Avec les zones de disponibilité, vous pouvez concevoir et exploiter des applications et des bases de données qui basculent automatiquement d’une zone à l’autre sans interruption. Les zones de disponibilité sont davantage disponibles, tolérantes aux pannes et ont une plus grande capacité de mise à l’échelle que les infrastructures traditionnelles à un ou plusieurs centres de données. 

Pour plus d'informations sur AWS les régions et les zones de disponibilité, consultez la section [Infrastructure AWS mondiale](https://aws.amazon.com/about-aws/global-infrastructure/).

Ce AWS produit ou service suit le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) par le biais des services Amazon Web Services (AWS) spécifiques qu'il prend en charge. Pour obtenir des informations sur la sécurité des AWS services, consultez la [AWS page de documentation sur la sécuritéAWS](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) [des services et les services concernés par les efforts de AWS conformité par programme de conformité](https://aws.amazon.com/compliance/services-in-scope/).

# Sécurité de l'infrastructure pour ce AWS produit ou service
<a name="infrastructure-security"></a>

Ce AWS produit ou service utilise des services gérés et est donc protégé par la sécurité du réseau AWS mondial. Pour plus d'informations sur les services AWS de sécurité et sur la manière dont AWS l'infrastructure est protégée, consultez la section [Sécurité du AWS cloud](https://aws.amazon.com/security/). Pour concevoir votre AWS environnement en utilisant les meilleures pratiques en matière de sécurité de l'infrastructure, consultez la section [Protection de l'infrastructure](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) dans le cadre * AWS bien architecturé du pilier de sécurité*.

Vous utilisez des appels d'API AWS publiés pour accéder à ce AWS produit ou service via le réseau. Les clients doivent prendre en charge les éléments suivants :
+ Protocole TLS (Transport Layer Security). Nous exigeons TLS 1.2 et recommandons TLS 1.3.
+ Ses suites de chiffrement PFS (Perfect Forward Secrecy) comme DHE (Ephemeral Diffie-Hellman) ou ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). La plupart des systèmes modernes tels que Java 7 et les versions ultérieures prennent en charge ces modes.

En outre, les demandes doivent être signées à l’aide d’un ID de clé d’accès et d’une clé d’accès secrète associée à un principal IAM. Vous pouvez également utiliser [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) pour générer des informations d’identification de sécurité temporaires et signer les demandes.

Ce AWS produit ou service suit le [modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/) par le biais des services Amazon Web Services (AWS) spécifiques qu'il prend en charge. Pour obtenir des informations sur la sécurité des AWS services, consultez la [AWS page de documentation sur la sécuritéAWS](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) [des services et les services concernés par les efforts de AWS conformité par programme de conformité](https://aws.amazon.com/compliance/services-in-scope/).

# Appliquer une version minimale de TLS dans le AWS SDK pour .NET
<a name="enforcing-tls"></a>

Pour renforcer la sécurité lors de la communication avec AWS les services, vous devez configurer le AWS SDK pour .NET pour utiliser le protocole TLS 1.2 ou version ultérieure.

 AWS SDK pour .NET Utilise le moteur d'exécution .NET sous-jacent pour déterminer le protocole de sécurité à utiliser. Par défaut, les versions actuelles de .NET utilisent le dernier protocole configuré pris en charge par le système d'exploitation. Votre application peut remplacer ce comportement du kit SDK, mais il *n'est pas recommandé* de le faire.

## .NET Core
<a name="enforcing-tls-dotnet-core"></a>

Par défaut, .NET Core utilise le dernier protocole configuré pris en charge par le système d'exploitation. Le AWS SDK pour .NET ne fournit pas de mécanisme permettant de remplacer cela.

Si vous utilisez une version .NET Core antérieure à 2.1, nous vous recommandons *vivement* de mettre à niveau votre version .NET Core.

Pour plus d'informations spécifiques à chaque système d'exploitation, reportez-vous à ce qui suit.

**Windows**

Dans les distributions modernes de Windows la prise en charge de TLS 1.2 est [activée par défaut](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-). Si vous utilisez Windows 7 SP1 ou Windows Server 2008 R2 SP1, vous devez vous assurer que le support TLS 1.2 est activé dans le registre, comme décrit dans [https://learn.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \$1tls -12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12). Si vous exécutez une distribution antérieure, vous devez mettre à niveau votre système d'exploitation. Pour plus d'informations sur la prise en charge du protocole TLS 1.3 sous Windows, consultez la dernière documentation Microsoft pour connaître les versions minimales requises du client ou du serveur.

**macOS**

Si vous exécutez .NET Core 2.1 ou version ultérieure, TLS 1.2 est activé par défaut. Le protocole TLS 1.2 est pris en charge par [OS X Mavericks 10.9 ou version](https://support.apple.com/en-us/103373) ultérieure. .NET Core version 2.1 et versions ultérieures nécessitent des versions plus récentes de macOS, comme décrit à l'adresse [https://learn.microsoft.com/en-us/dotnet/core/install/windows? tabs=net80&pivots=os-macos](https://learn.microsoft.com/en-us/dotnet/core/install/windows?tabs=net80&pivots=os-macos).

Si vous utilisez .NET Core 1.0, .NET Core [utilise OpenSSL sur macOS](https://github.com/dotnet/announcements/issues/21), une dépendance qui doit être installée séparément. OpenSSL a ajouté le support pour TLS 1.2 dans la version 1.0.1, et le support pour TLS 1.3 dans la version 1.1.1.

**Linux**

.NET Core sous Linux nécessite OpenSSL, qui est fourni avec de nombreuses distributions Linux. Mais il peut également être installé séparément. OpenSSL a ajouté le support pour TLS 1.2 dans la version 1.0.1, et le support pour TLS 1.3 dans la version 1.1.1. Si vous utilisez une version moderne de .NET Core (2.1 ou version ultérieure) et que vous avez installé un gestionnaire de paquets, il est probable qu'une version plus moderne d'OpenSSL a été installée pour vous.

Pour être sûr, vous pouvez exécuter **`openssl version`** dans un terminal et vérifier que la version est postérieure à 1.0.1.

## .NET Framework
<a name="enforcing-tls-dotnet-framework"></a>

Si vous exécutez une version moderne de .NET Framework (4.7 ou version ultérieure) et une version moderne de Windows (au moins Windows 8 pour les clients, Windows Server 2012 ou version ultérieure pour les serveurs), TLS 1.2 est activé et utilisé par défaut.

Si vous utilisez un environnement d'exécution .NET Framework qui n'utilise pas les paramètres du système d'exploitation (.NET Framework 3.5 à 4.5.2), il AWS SDK pour .NET tentera d'[ajouter la prise en charge de TLS 1.1 et TLS 1.2](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/Amazon.Runtime/Pipeline/HttpHandler/AmazonSecurityProtocolManager.cs) aux protocoles pris en charge. Si vous utilisez .NET Framework 3.5, cela ne fonctionnera que si le correctif approprié est installé, comme suit :
+ Windows 10 version 1511 et Windows Server 2016 — [KB3156421](https://support.microsoft.com/kb/3156421)
+ Windows 8.1 et Windows Server 2012 R2 — [KB3154520](https://support.microsoft.com/kb/3154520)
+ Windows Server 2012 — [KB3154519](https://support.microsoft.com/kb/3154519)
+ Windows 7 SP1 et Server 2008 R2 SP1 — [KB3154518](https://support.microsoft.com/kb/3154518)

**Avertissement**  
À compter du 15 août 2024, le AWS SDK pour .NET support de .NET Framework 3.5 cessera et la version minimale de .NET Framework sera remplacée par 4.7.2. Pour plus d'informations, consultez le billet de blog [Changements importants à venir pour les cibles .NET Framework 3.5 et 4.5 du AWS SDK pour .NET](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/).

Si votre application s'exécute sur un .NET Framework plus récent sous Windows 7 SP1 ou Windows Server 2008 R2 SP1, vous devez vous assurer que le support TLS 1.2 est activé dans le registre, comme décrit dans [https://learn.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \$1tls -12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12). Dans les versions plus récentes de Windows il est [activé par défaut](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-).

Pour connaître les meilleures pratiques détaillées relatives à l'utilisation du protocole TLS avec .NET Framework, consultez l'article Microsoft à [https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls](https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls)l'adresse.

## Outils AWS pour PowerShell
<a name="enforcing-tls-ps"></a>

[Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)utilisez le AWS SDK pour .NET pour tous les appels aux AWS services. Le comportement de votre environnement dépend de la version de Windows que PowerShell vous utilisez, comme suit.

**Windows PowerShell 2.0 à 5.x**

Windows PowerShell 2.0 à 5.x s'exécute sur .NET Framework. Vous pouvez vérifier quel environnement d'exécution .NET (2.0 ou 4.0) est utilisé à PowerShell l'aide de la commande suivante.

```
$PSVersionTable.CLRVersion
```
+ Lorsque vous utilisez .NET Runtime 2.0, suivez les instructions fournies précédemment concernant le AWS SDK pour .NET et .NET Framework 3.5.
**Avertissement**  
À compter du 15 août 2024, le AWS SDK pour .NET support de .NET Framework 3.5 cessera et la version minimale de .NET Framework sera remplacée par 4.7.2. Pour plus d'informations, consultez le billet de blog [Changements importants à venir pour les cibles .NET Framework 3.5 et 4.5 du AWS SDK pour .NET](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/).
+ Lorsque vous utilisez .NET Runtime 4.0, suivez les instructions fournies précédemment concernant AWS SDK pour .NET et .NET Framework 4\$1.

**Windows PowerShell 6.0**

Windows PowerShell 6.0 et les versions ultérieures s'exécutent sur .NET Core. Vous pouvez vérifier quelle version de .NET Core est utilisée en exécutant la commande suivante.

```
[System.Reflection.Assembly]::GetEntryAssembly().GetCustomAttributes([System.Runtime.Versioning.TargetFrameworkAttribute], $true).FrameworkName
```

Suivez les instructions fournies précédemment concernant AWS SDK pour .NET la version appropriée de .NET Core.

## Xamarin
<a name="enforcing-tls-xamarin"></a>

[Pour Xamarin, consultez les instructions sur -layer-security. https://learn.microsoft.com/en-us/ xamarin/cross-platform/app-fundamentals/transport](https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security) Pour résumer :

**Pour Android**
+ Exige Android 5.0 ou version ultérieure.
+ **Propriétés du projet**, **options Android** : l' HttpClient implémentation doit être définie **sur Android** et l' SSL/TLS implémentation définie sur **Native TLS 1.2\$1**.

**Pour iOS**
+ Exige iOS 7 ou version ultérieure.
+ **Propriétés du projet**, **version iOS** : l' HttpClientimplémentation doit être définie sur **NSUrlSession**.

**Pour macOS**
+ Exige macOS 10.9 ou version ultérieure.
+ **Options du projet**, **build**, **build Mac** : l' HttpClient implémentation doit être définie sur **NSUrlSession**.

## Unity
<a name="enforcing-tls-unity"></a>

Vous devez utiliser Unity 2018.2 ou version ultérieure et utiliser le runtime de script équivalent .NET 4.x. Vous pouvez le définir dans **les paramètres du projet**, dans **la configuration**, dans le **lecteur**, comme décrit dans le [https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgradefichier .html.](https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html) L'environnement d'exécution de script équivalent .NET 4.x permet la prise en charge du protocole TLS 1.2 sur toutes les plateformes Unity exécutant Mono ou CPP. IL2 

## Navigateur (pour Blazor WebAssembly)
<a name="enforcing-tls-browser"></a>

WebAssembly s'exécute dans le navigateur plutôt que sur le serveur et utilise le navigateur pour gérer le trafic HTTP. Par conséquent, la prise en charge de TLS est déterminée par la prise en charge du navigateur.

[Blazor WebAssembly, en version préliminaire d'ASP.NET Core 3.1, n'est pris en charge que dans les navigateurs compatibles WebAssembly, comme décrit dans -platforms. https://learn.microsoft.com/en-us/ aspnet/core/blazor/supported](https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms) Tous les principaux navigateurs étaient compatibles avec le protocole TLS 1.2 avant de le prendre en charge WebAssembly. Si tel est le cas pour votre navigateur, alors si votre application s'exécute, elle peut communiquer via TLS 1.2.

Consultez la documentation de votre navigateur pour plus d'informations et de vérifications.

# Migration du client de chiffrement Amazon S3 (V1 vers V2)
<a name="s3-encryption-migration-v1-v2"></a>

**Note**  
Si vous utilisez la version 2 et que vous souhaitez migrer vers la version 4, consultez[Migration du client de chiffrement Amazon S3 (V2 vers V4)](s3-encryption-migration-v2-v4.md).

Cette rubrique explique comment migrer vos applications de la version 1 (V1) du client de chiffrement Amazon Simple Storage Service (Amazon S3) vers la version 2 (V2), et comment garantir la disponibilité des applications tout au long du processus de migration.

Les objets chiffrés avec le client V2 ne peuvent pas être déchiffrés avec le client V1. Afin de faciliter la migration vers le nouveau client sans avoir à rechiffrer tous les objets en même temps, un client « V1-Transitional » a été fourni. Ce client peut *déchiffrer* les objets chiffrés en V1 et en V2, mais *chiffre* les objets uniquement dans un format compatible avec la version 1. Le client V2 peut *déchiffrer* à la fois les objets chiffrés en V1 et en V2 (lorsqu'il est activé pour les objets V1), mais *chiffre* les objets uniquement dans un format compatible avec la version v2.

## Présentation de la migration
<a name="s3-encryption-migration-v1-v2-overview"></a>

Cette migration s'effectue en trois phases. Ces phases sont présentées ici et décrites en détail ultérieurement. Chaque phase doit être terminée pour *tous les* clients qui utilisent des objets partagés avant le début de la phase suivante.

1. **Mettez à jour les clients existants vers les clients de transition V1 pour lire les nouveaux formats.** Tout d'abord, mettez à jour vos applications pour qu'elles dépendent du client V1-Transitional plutôt que du client V1. Le client V1-Transitional permet à votre code existant de déchiffrer les objets écrits par les nouveaux clients V2 et les objets écrits dans un format compatible avec la version 1.
**Note**  
Le client V1-Transitional est fourni à des fins de migration uniquement. Procédez à la mise à niveau vers le client V2 après avoir migré vers le client V1-Transitional.

1. **Migrez les clients de transition V1 vers les clients V2 pour écrire de nouveaux formats.** Remplacez ensuite tous les clients de transition V1 de vos applications par des clients V2 et définissez le profil de sécurité sur. `V2AndLegacy` La définition de ce profil de sécurité sur les clients V2 permet à ces clients de déchiffrer des objets chiffrés dans un format compatible avec la version 1.

1. **Mettez à jour les clients V2 pour qu'ils ne lisent plus les formats V1.** Enfin, une fois que tous les clients ont été migrés vers la version V2 et que tous les objets ont été chiffrés ou rechiffrés dans un format compatible avec la version 2, définissez le profil de sécurité V2 sur au lieu de. `V2` `V2AndLegacy` Cela empêche le déchiffrement d'objets au format compatible avec la version 1.

## Mettez à jour les clients existants vers des clients de transition vers la version 1 pour lire les nouveaux formats
<a name="s3-encryption-migration-v1-v2-to-v1n"></a>

Le client de chiffrement V2 utilise des algorithmes de chiffrement que les anciennes versions du client ne prennent pas en charge. La première étape de la migration consiste à mettre à jour vos clients de déchiffrement V1 afin qu'ils puissent lire le nouveau format.

Le client V1-Transitional permet à vos applications de déchiffrer les objets chiffrés en V1 et en V2. Ce client fait partie du package [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). Effectuez les étapes suivantes sur chacune de vos applications pour utiliser le client V1-Transitional.

1. Prenez une nouvelle dépendance vis-à-vis du package [Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). **Si votre projet dépend directement du **AWSSDK.S3** ouAWSSDK. KeyManagementService**packages, vous devez soit mettre à jour ces dépendances, soit les supprimer afin que leurs versions mises à jour soient intégrées à ce nouveau package.

1. Remplacez l'`using`instruction appropriée par « `Amazon.S3.Encryption` à »`Amazon.Extensions.S3.Encryption`, comme suit : 

   ```
   // using Amazon.S3.Encryption;
     using Amazon.Extensions.S3.Encryption;
   ```

1. Reconstruisez et redéployez votre application.

Le client V1-Transitional est entièrement compatible avec l'API du client V1, aucune autre modification de code n'est donc requise.

## Migrer les clients de transition V1 vers les clients V2 pour écrire de nouveaux formats
<a name="s3-encryption-migration-v1-v2-v1n-to-v2"></a>

Le client V2 fait partie du package [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). Il permet à vos applications de déchiffrer les objets chiffrés en V1 et en V2 (si cela est configuré pour le faire), mais chiffre les objets uniquement dans un format compatible avec la version v2.

Après avoir mis à jour vos clients existants pour lire le nouveau format de chiffrement, vous pouvez procéder à la mise à jour en toute sécurité de vos applications vers les clients de chiffrement et de déchiffrement V2. Pour utiliser le client V2, effectuez les étapes suivantes sur chacune de vos applications :

1. Remplacez `EncryptionMaterials` par `EncryptionMaterialsV2`

   1. Lorsque vous utilisez KMS :

      1. Fournissez un ID de clé KMS.

      1. Déclarez la méthode de cryptage que vous utilisez, c'est-à-dire`KmsType.KmsContext`.

      1. Fournissez un contexte de chiffrement à KMS à associer à cette clé de données. Vous pouvez envoyer un dictionnaire vide (le contexte de chiffrement Amazon sera toujours intégré), mais il est recommandé de fournir un contexte supplémentaire.

   1. Lorsque vous utilisez des méthodes d'encapsulation de clé fournies par l'utilisateur (chiffrement symétrique ou asymétrique) :

      1. Fournissez une `AES` ou une `RSA` instance contenant le matériel de chiffrement.

      1. Déclarez l'algorithme de chiffrement à utiliser, c'est-à-dire `SymmetricAlgorithmType.AesGcm` ou`AsymmetricAlgorithmType.RsaOaepSha1`.

1. Passez `AmazonS3CryptoConfiguration` à `AmazonS3CryptoConfigurationV2` avec la `SecurityProfile` propriété définie sur`SecurityProfile.V2AndLegacy`.

1. Remplacez `AmazonS3EncryptionClient` par `AmazonS3EncryptionClientV2` Ce client prend les objets récemment convertis `AmazonS3CryptoConfigurationV2` et `EncryptionMaterialsV2` les objets des étapes précédentes.

### Exemple : KMS vers KMS\$1Context
<a name="s3-encryption-migration-v1-v2-ex-kms"></a>

**Prémigration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var encryptionMaterial = new EncryptionMaterials("1234abcd-12ab-34cd-56ef-1234567890ab");
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Après la migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2("1234abcd-12ab-34cd-56ef-1234567890ab", KmsType.KmsContext, encryptionContext);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

### Exemple : algorithme symétrique (enroulement de clé AES-CBC vers AES-GCM)
<a name="s3-encryption-migration-v1-v2-ex-aes"></a>

`StorageMode` peut avoir la valeur `ObjectMetadata` ou `InstructionFile`.

**Prémigration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterials(symmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Après la migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterialsV2(symmetricAlgorithm, SymmetricAlgorithmType.AesGcm);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

**Note**  
Lors du déchiffrement avec AES-GCM, lisez l'objet dans son intégralité avant de commencer à utiliser les données déchiffrées. Cela permet de vérifier que l'objet n'a pas été modifié depuis qu'il a été chiffré.

### Exemple : algorithme asymétrique (RSA to RSA-OAEP-SHA 1 Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-rsa"></a>

`StorageMode` peut avoir la valeur `ObjectMetadata` ou `InstructionFile`.

**Prémigration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterials(asymmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Après la migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterialsV2(asymmetricAlgorithm, AsymmetricAlgorithmType.RsaOaepSha1);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

## Mettre à jour les clients V2 pour ne plus lire les formats V1
<a name="s3-encryption-migration-v1-v2-v2-cleanup"></a>

À terme, tous les objets auront été chiffrés ou rechiffrés à l'aide d'un client V2. *Une fois cette conversion terminée*, vous pouvez désactiver la compatibilité V1 dans les clients V2 en définissant la `SecurityProfile` propriété sur`SecurityProfile.V2`, comme indiqué dans l'extrait suivant.

```
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
```

# Migration du client de chiffrement Amazon S3 (V2 vers V4)
<a name="s3-encryption-migration-v2-v4"></a>

**Note**  
Si vous utilisez la V1 et que vous souhaitez migrer vers la V4, vous devez d'abord migrer vers la V2. Consultez [Migration du client de chiffrement Amazon S3 (V1 vers V2)](s3-encryption-migration-v1-v2.md).

Cette rubrique explique comment migrer vos applications de la version 2 (V2) du client de chiffrement Amazon Simple Storage Service (Amazon S3) vers la version 4 (V4) et comment garantir la disponibilité des applications tout au long du processus de migration. La V4 utilise l'AES-GCM avec un engagement clé pour le chiffrement du contenu et introduit des politiques d'engagement pour améliorer la sécurité contre les attaques par substitution de clés.

Le client V4 est disponible dans le package [ NuGet Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption).

**Important**  
**Changements majeurs : les** clients V4 configurés avec une `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` politique ne peuvent pas déchiffrer les objets chiffrés avec les clients V1 ou V2. Seuls les derniers clients V2 peuvent déchiffrer les objets chiffrés V4 avec un engagement clé. Avant de passer à cette `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` politique, vous devez rechiffrer toutes vos données existantes à l'aide de clients V4 avec activation de la clé d'engagement.

## Comprendre les concepts de la V4
<a name="s3-encryption-migration-v2-v4-concepts"></a>

La V4 utilise l'AES-GCM avec un engagement clé en matière de chiffrement de contenu et introduit des concepts de sécurité clés qui améliorent la protection de vos données chiffrées :

### Politique d'engagement
<a name="s3-encryption-migration-v2-v4-concepts-policy"></a>

La politique d'engagement contrôle la manière dont le client de chiffrement gère l'engagement des clés lors des opérations de chiffrement et de déchiffrement. V4 soutient trois politiques d'engagement :

`FORBID_ENCRYPT_ALLOW_DECRYPT`  
*Chiffrement :* sans engagement  
*Déchiffrement :* autorise les objets non validants  
*Sécurité :* n'impose pas d'engagement et peut permettre la falsification  
*Compatibilité :* toutes les implémentations V2 et V4 peuvent lire les objets chiffrés avec cette politique

`REQUIRE_ENCRYPT_ALLOW_DECRYPT`  
*Chiffrement :* avec engagement clé  
*Déchiffrement :* autorise à la fois les objets validants et non validants  
*Sécurité :* les nouveaux objets sont protégés contre les attaques de substitution de clés, les anciens objets restent lisibles  
*Compatibilité :* seule la version V4 prend en charge cette politique

`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`(Par défaut pour la V4)  
*Chiffrement :* avec engagement clé  
*Déchiffrement : validation* d'objets uniquement  
*Sécurité :* mise en œuvre complète des engagements pour une sécurité maximale  
*Compatibilité :* seule la version V4 prend en charge cette politique

### AES GCM avec un engagement clé
<a name="s3-encryption-migration-v2-v4-concepts-aesgcm"></a>

La V4 utilise l'AES-GCM avec un engagement clé pour le chiffrement du contenu, ce qui améliore la sécurité :
+ *Protection contre la falsification :* elle protège contre les attaques de substitution de clés en liant cryptographiquement la clé aux données cryptées.
+ *Compatibilité des versions :* les objets chiffrés avec un engagement clé ne peuvent être déchiffrés que par les clients V4 et les versions plus récentes.

**Avertissement**  
Avant d'activer le chiffrement par engagement par clé en production, assurez-vous que toutes les applications qui ont besoin de déchiffrer vos objets ont été mises à niveau vers la version V4 ou une version ultérieure, car le client V2 est obsolète.

## Mettre à jour les clients existants pour lire les formats V4
<a name="s3-encryption-migration-v2-v4-update-clients"></a>

Le client de chiffrement V4 utilise des algorithmes de chiffrement que les anciennes versions du client ne prennent pas en charge. La première étape de la migration consiste à mettre à jour vos clients V2 afin qu'ils puissent lire le nouveau format V4.

### Mettre à jour les dépendances NuGet du package
<a name="s3-encryption-migration-v2-v4-update-nuget"></a>

Mettez à jour vos applications pour utiliser la dernière version du package [Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet qui inclut le support V4. Effectuez les étapes suivantes sur chacune de vos applications :

1. Effectuez la mise à jour vers le dernier package [Amazon.Extensions.S3.Encryption.](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) **Si votre projet dépend directement du **AWSSDK.S3** ouAWSSDK. KeyManagementService**packages, vous devez soit mettre à jour ces dépendances, soit les supprimer afin que leurs versions mises à jour soient intégrées à ce nouveau package.

1. Assurez-vous que vos `using` instructions font référence au bon espace de noms :

   ```
   using Amazon.Extensions.S3.Encryption;
   using Amazon.Extensions.S3.Encryption.Primitives;
   ```

1. Reconstruisez et redéployez votre application.

Vos clients V2 existants continueront de fonctionner avec le package mis à jour et pourront déchiffrer les objets chiffrés par les clients V4 (en fonction de la politique d'engagement utilisée).

### Création et déploiement d'applications
<a name="s3-encryption-migration-v2-v4-build-deploy"></a>

Après avoir mis à jour les dépendances de votre NuGet package :

1. Créez votre application pour vous assurer que toutes les dépendances sont correctement résolues.

1. Testez votre application dans un environnement de développement pour vérifier que les fonctionnalités existantes continuent de fonctionner.

1. Déployez l'application mise à jour dans votre environnement de production.

Cette mise à jour permet à vos clients V2 existants de déchiffrer les objets qui seront chiffrés par les clients V4, garantissant ainsi la compatibilité pendant le processus de migration.

## Migrer vers des clients V4
<a name="s3-encryption-migration-v2-v4-migrate"></a>

Après avoir mis à jour vos clients existants pour lire le nouveau format de chiffrement, vous pouvez procéder à la mise à jour sécurisée de vos applications afin d'utiliser les clients de chiffrement et de déchiffrement V4. Le client V4 fournit une sécurité renforcée grâce à un engagement clé tout en maintenant la compatibilité avec les objets chiffrés existants.

### Processus de migration en 4 étapes
<a name="s3-encryption-migration-v2-v4-migrate-steps"></a>

La migration de la V2 vers la V4 suit un processus structuré en 4 étapes pour garantir la compatibilité et la sécurité. Chaque étape représente une configuration spécifique qui doit être déployée dans toutes vos applications avant de passer à l'étape suivante.

1. **Étape 0 : Client V2 (point de départ)** - Votre implémentation V2 existante

1. **Étape 1 : compatibilité V4 avec V2** - Migrer vers le client V4 tout en conservant un comportement de chiffrement compatible avec la version V2

1. **Étape 2 : version V4 avec écriture par clé** - Commencez à chiffrer avec un engagement par clé tout en autorisant le déchiffrement des objets existants

1. **Étape 3 : V4 avec mise en œuvre complète** - Nécessite un engagement clé pour le chiffrement et le déchiffrement

### Étape 0 : Client V2 (point de départ)
<a name="s3-encryption-migration-v2-v4-step0"></a>

Cela représente la configuration de votre client V2 existante. Cette étape montre l'état de départ avant la migration.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 0: V2 Client - Starting configuration
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2(kmsKeyId, KmsType.KmsContext, encryptionContext);

#pragma warning disable 0618
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
#pragma warning enable 0618

var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

### Étape 1 : compatibilité V4 avec V2
<a name="s3-encryption-migration-v2-v4-step1"></a>

Migrez vers le client V4 tout en conservant un comportement identique à celui de la V2. Cette étape utilise une `FORBID_ENCRYPT_ALLOW_DECRYPT` politique pour chiffrer sans engagement et permettre le déchiffrement de tous les objets.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 1: V4 Client with V2 compatibility
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcm);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Comportement :** chiffre sans engagement, peut déchiffrer à la fois les objets validants et non validants. Comportement identique à celui de la V2.

### Étape 2 : V4 avec des écritures d'engagement clés
<a name="s3-encryption-migration-v2-v4-step2"></a>

Commencez à chiffrer avec un engagement clé tout en maintenant la rétrocompatibilité pour le déchiffrement. Cette étape utilise `REQUIRE_ENCRYPT_ALLOW_DECRYPT` la politique.

**Avertissement**  
Avant de déployer l'étape 2, assurez-vous que tous les lecteurs ont été mis à jour à l'étape 1 ou à une version ultérieure pour gérer le chiffrement par engagement par clé.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 2: V4 Client with key commitment writes
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcmWithCommitment);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Comportement :** chiffre avec engagement, permet de déchiffrer à la fois les objets validants et non validants. Les nouveaux objets sont protégés contre les attaques de substitution de clés.

### Étape 3 : V4 avec mise en œuvre complète
<a name="s3-encryption-migration-v2-v4-step3"></a>

Exigez un engagement clé pour le chiffrement et le déchiffrement. Cette étape utilise une `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` politique pour une sécurité maximale.

**Avertissement**  
Avant de déployer l'étape 3, assurez-vous que tous les objets de votre système ont été rechiffrés avec une clé d'engagement (étape 2). Cette étape ne parviendra pas à déchiffrer les objets chiffrés sans engagement.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 3: V4 Client with full key commitment enforcement
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcmWithCommitment);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Comportement :** chiffre avec engagement, déchiffre uniquement les objets chiffrés avec engagement. Sécurité maximale contre les attaques par substitution de clés.

## Exemples de configuration supplémentaires
<a name="s3-encryption-migration-v2-v4-examples"></a>

Cette section fournit des exemples supplémentaires pour configurer les clients V4 avec différentes options lors de la migration.

### Permettre le support existant
<a name="s3-encryption-migration-v2-v4-examples-legacy"></a>

Pour permettre aux clients V4 de lire les objets chiffrés par les clients V1 et V2, configurez le client avec une politique d'engagement qui autorise le déchiffrement traditionnel :

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

// Configure V4 client to read V1/V2 objects
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};

// This configuration allows:
// - Encryption: With commitment (secure)
// - Decryption: Both V2 (non-committing) and V4 (committing) objects
```

Utilisez cette configuration lors de la migration lorsque vous devez déchiffrer des objets chiffrés par des clients plus anciens tout en vous assurant que les nouveaux objets sont chiffrés avec une sécurité renforcée.

### Configuration de la méthode de stockage
<a name="s3-encryption-migration-v2-v4-examples-storage"></a>

La V4 prend en charge deux méthodes de stockage pour les métadonnées de chiffrement. Choisissez la méthode la mieux adaptée à votre cas d'utilisation :

**Métadonnées d'objet (par défaut)**

```
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
// Encryption metadata is stored in S3 object metadata
```

**Fichier d'instructions**

```
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.InstructionFile
};
// Encryption metadata is stored in a separate S3 object (instruction file)
```

À utiliser `InstructionFile` lorsque vous devez conserver les métadonnées d'objets à d'autres fins ou lorsque vous travaillez avec des objets dont la taille des métadonnées est limitée.

### Configuration de la politique d'engagement
<a name="s3-encryption-migration-v2-v4-examples-policy"></a>

Choisissez la politique d'engagement appropriée en fonction de vos exigences de sécurité et de la phase de migration :

**Phase de migration (compatibilité V2)**

```
// For migration: encrypt without commitment, allow all decryption
var migrationConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT);
```

**Phase de transition (recommandée)**

```
// For transition: encrypt with commitment, allow legacy decryption
var transitionConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT);
```

**Phase de sécurité complète**

```
// For maximum security: require commitment for both encryption and decryption
var secureConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT);
```

Commencez par `FORBID_ENCRYPT_ALLOW_DECRYPT` la migration initiale, passez à la phase `REQUIRE_ENCRYPT_ALLOW_DECRYPT` de transition, puis utilisez-la `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` lorsque tous les clients ont été mis à niveau et que tous les objets ont été rechiffrés avec engagement.