Amazon Neptune
Guide de l'utilisateur (Version de l'API 2017-11-29)

Partage d'un instantané de base de données ou de cluster de base de données

Neptune vous permet de partager un instantané de base de données manuel ou un instantané de cluster de base de données des façons suivantes :

  • Le partage d'un instantané de base de données manuel ou d'un instantané de cluster de base de données chiffré ou non chiffré permet aux comptes AWS autorisés de copier l'instantané.

  • Le partage d'un instantané de base de données manuel non chiffré permet aux comptes AWS autorisés de restaurer directement une instance de base de données à partir de l'instantané, plutôt que d'effectuer une copie et de la restaurer. Toutefois, vous ne pouvez pas restaurer une instance de base de données à partir d'un instantané de base de données qui est à la fois partagé et chiffré. Par contre, vous pouvez créer une copie de l'instantané de base de données et restaurer l'instance de base de données à partir de cette copie.

  • Le partage d'un instantané de cluster de base de données manuel chiffré ou non chiffré permet aux comptes AWS autorisés de restaurer directement un cluster de base de données à partir l'instantané plutôt que d'effectuer une copie et de la restaurer.

Note

Pour partager un instantané de base de données automatisé ou un instantané de cluster de base de données, copiez-le pour en créer une version manuelle, puis partagez cette copie.

Vous pouvez partager un instantané manuel avec 20 autres comptes AWS maximum. Vous pouvez également partager un instantané manuel non chiffré marqué comme public ; il est ainsi accessible à tous les comptes AWS. Lors du partage d'un instantané marqué comme public, n'incluez aucune information privée dans vos instantanés publics.

Note

Lorsque vous restaurez une instance de base de données ou un cluster de base de données depuis un instantané partagé à l'aide de l'API AWS Command Line Interface (AWS CLI) ou Neptune, vous devez spécifier l'Amazon Resource Name (ARN) de l'instantané partagé en tant qu'identifiant de l'instantané.

Partage d'un instantané chiffré

Vous pouvez partager des instantanés de base de données ou des instantanés de cluster de base de données qui ont été chiffrés « au repos » en utilisant l'algorithme de chiffrement AES-256. Pour ce faire, vous devez exécuter les étapes suivantes :

  1. Partagez la clé de chiffrement AWS Key Management Service (AWS KMS) qui a été utilisée pour chiffrer l'instantané avec tous les comptes que vous souhaitez autoriser à accéder à l'instantané.

    Vous pouvez partager des clés de chiffrement AWS KMS avec un autre compte AWS en ajoutant l'autre compte à la stratégie de clé KMS. Pour plus de détails sur la mise à jour d'une stratégie de clé, voir Key Policies (Stratégies de clés) dans le Developer Guide (Guide du développeur) AWS KMS. Pour obtenir un exemple de création d'une stratégie de clé, consultez Autorisation de l'accès à une clé de chiffrement AWS KMS plus loin dans cette rubrique.

  2. Utilisez l'API AWS Management Console, AWS CLI ou Neptune pour partager l'instantané chiffré avec les autres comptes.

Ces restrictions s'appliquent au partage d'instantanés chiffrés :

  • Vous ne pouvez pas partager des instantanés chiffrés marqués comme publics.

  • Vous ne pouvez pas partager un instantané chiffré à l'aide de la clé de chiffrement AWS KMS par défaut du compte AWS qui a partagé l'instantané.

Autorisation de l'accès à une clé de chiffrement AWS KMS

Pour qu'un autre compte AWS copie un instantané de base de données ou un instantané de cluster de base de données chiffré partagé depuis votre compte, le compte avec lequel vous partagez votre instantané doit avoir accès à la clé KMS qui a chiffré l'instantané. Pour autoriser un autre compte AWS à accéder à une clé AWS KMS, mettez à jour la stratégie de clé pour la clé KMS avec l'ARN du compte AWS auquel vous partagez en tant que Principal dans la stratégie de clé KMS, puis autorisez l'action kms:CreateGrant.

Une fois que vous avez donné à un compte AWS l'accès à votre clé de chiffrement KMS, pour copier votre instantané chiffré, ce compte AWS doit créer un utilisateur AWS Identity and Access Management (IAM) s'il n'en possède pas déjà un. En outre, ce compte AWS doit également attacher une stratégie IAM pour cet utilisateur IAM qui permet à ce dernier de copier un instantané de base de données chiffré à l'aide de votre clé KMS. Le compte doit être un utilisateur IAM et ne peut pas être une identité du compte AWS racine en raison des restrictions de sécurité KMS.

Dans l'exemple de stratégie suivant, l'utilisateur 111122223333 est le propriétaire de la clé de chiffrement KMS, et l'utilisateur 444455556666 est le compte avec lequel la clé est partagée. Cette stratégie de clé mise à jour permet au compte AWS d'accéder à la clé KMS en incluant l'ARN pour l'identité du compte AWS racine pour l'utilisateur 444455556666 en tant que Principal pour la stratégie et en autorisant l'action kms:CreateGrant.

{ "Id": "key-policy-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KeyUser", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KeyUser", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} } ] }

Création d'une stratégie IAM pour permettre la copie d'un instantané chiffré

Une fois que le compte AWS externe peut accéder à votre clé KMS, le propriétaire de ce compte AWS peut créer une stratégie qui autorise un utilisateur IAM créé pour ce compte à copier un instantané chiffré avec cette clé KMS.

L'exemple suivant montre une stratégie pouvant être attachée à un utilisateur IAM pour un compte AWS 444455556666 qui permet à l'utilisateur IAM de copier un instantané partagé depuis le compte AWS 111122223333 qui a été chiffré avec la clé KMS c989c1dd-a3f2-4a5d-8d96-e793d082ab26 dans la région us-west-2.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUseOfTheKey", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant" ], "Resource": ["arn:aws:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"] }, { "Sid": "AllowAttachmentOfPersistentResources", "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["arn:aws:kms:us-west-2:111122223333:key/c989c1dd-a3f2-4a5d-8d96-e793d082ab26"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ] }

Pour plus de détails sur la mise à jour d'une stratégie de clé, voir Key Policies (Stratégies de clés) dans le Developer Guide (Guide du développeur) AWS KMS.

AWS Management Console

Vous pouvez partager un instantané de base de données manuel ou un instantané de cluster de base de données avec jusqu'à 20 autres comptes AWS à l'aide de la console Neptune. Vous pouvez également utiliser la console pour arrêter le partage d'un instantané manuel avec un ou plusieurs comptes.

Pour partager un instantané de base de données manuel ou un instantané de cluster de base de données à l'aide de la console Neptune

  1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Neptune à partir de l'adresse https://console.aws.amazon.com/neptune/home.

  2. Dans le volet de navigation, choisissez Snapshots.

  3. Pour Filter, choisissez Instantanés manuels.

  4. Activez la case à cocher pour l'instantané manuel que vous voulez partager.

  5. Choisissez Actions d'instantané, puis Partager un instantané.

  6. Choisissez l'une des options suivantes pour Visibilité d'instantané DB.

    • Si le cluster de base de données source est non chiffré, choisissez Public pour permettre à tous les comptes AWS de restaurer une instance de base de données à partir d'un instantané de base de données manuel, ou choisissez Private pour autoriser uniquement les comptes AWS indiqués à restaurer une instance de base de données à partir d'un instantané de base de données manuel.

      Avertissement

      Si vous configurez DB Snapshot Visibility sur Public, tous les comptes AWS peuvent restaurer une instance de base de données depuis votre instantané de base de données manuel et accéder à vos données. Ne partagez aucun instantané de base de données manuel contenant des informations privées en le marquant comme Public.

    • Si le cluster de base de données source est chiffré, Visibilité d'instantané DB est défini sur Private, car les instantanés chiffrés ne peuvent pas être partagés s'ils sont marqués comme étant publics.

  7. Dans ID de compte AWS, saisissez l'identifiant du compte AWS que vous souhaitez autoriser à restaurer une instance de base de données ou un cluster de base de données depuis votre instantané manuel, puis choisissez Ajouter. Faites de même pour inclure des identifiants de compte AWS supplémentaires, jusqu'à 20 comptes AWS.

    Si vous faites une erreur en ajoutant un identifiant de compte AWS à la liste des comptes autorisés, vous pouvez le supprimer de la liste en choisissant Delete à droite de l'identifiant de compte AWS incorrect.

  8. Après avoir ajouté des identifiants pour tous les comptes AWS que vous souhaitez autoriser à restaurer l'instantané manuel, choisissez Save pour enregistrer vos changements.

Pour arrêter de partager un instantané de base de données manuel ou un instantané de cluster de base de données à l'aide d'un compte AWS

  1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Neptune à partir de l'adresse https://console.aws.amazon.com/neptune/home.

  2. Dans le volet de navigation, choisissez Snapshots.

  3. Pour Filter, choisissez Instantanés manuels.

  4. Activez la case à cocher pour l'instantané manuel que vous ne voulez plus partager.

  5. Choisissez Actions d'instantané, puis Partager un instantané.

  6. Pour supprimer une autorisation pour un compte AWS, choisissez Delete pour l'identifiant du compte AWS dans la liste des comptes autorisés.

  7. Choisissez Save pour enregistrer les changements.

AWS CLI

Pour partager un instantané de base de données, utilisez la commande aws neptune modify-db-snapshot-attribute. Utilisez le paramètre --values-to-add pour ajouter une liste des ID de comptes AWS autorisés à restaurer l'instantané manuel.

L'exemple suivant autorise deux identifiants de compte AWS, 123451234512 et 123456789012, à restaurer l'instantané appelé manual-snapshot1, et supprime la valeur de l'attribut all pour marquer l'instantané de base de données comme privé.

aws neptune modify-db-snapshot-attribute \ --db-snapshot-identifier manual-snapshot1 \ --attribute-name restore \ --values-to-add '["111122223333","444455556666"]'

Pour supprimer de la liste un identifiant de compte AWS, utilisez le paramètre -- values-to-remove. L'exemple suivant empêche l'ID 444455556666 de compte AWS de restaurer l'instantané.

aws neptune modify-db-snapshot-attribute \ --db-snapshot-identifier manual-snapshot1 \ --attribute-name restore \ --values-to-remove '["444455556666 "]'

API

Vous pouvez également partager un instantané de base de données manuel ou un instantané de cluster de base de données avec d'autres comptes AWS à l'aide de l'API Neptune. Pour ce faire, appelez l'action ModifyDBSnapshotAttribute pour les instances de base de données, ou l'action ModifyDBClusterSnapshotAttribute pour les clusters de base de données Amazon Aurora. Indiquez restore pour AttributeName, et utilisez le paramètre ValuesToAdd pour ajouter une liste des ID de comptes AWS pour ceux autorisés à restaurer l'instantané manuel.

Pour qu'un instantané manuel soit défini comme étant public et qu'il puisse être restauré par tous les comptes AWS, utilisez la valeur all. Toutefois, n'ajoutez pas la valeur all pour tous les snapshots manuels contenant des informations privées que vous ne souhaitez pas mettre à la disposition de tous les comptes AWS. De même, ne spécifiez pas la valeur all pour les instantanés chiffrés, car il est impossible de rendre tous ces instantanés publics.

Pour supprimer l'autorisation de partage d'un compte AWS, utilisez l'action ModifyDBSnapshotAttribute or ModifyDBClusterSnapshotAttribute avec AttributeName configuré sur restore et le paramètre ValuesToRemove. Pour marquer un instantané manuel comme privé, supprimez la valeur all de la liste des valeurs pour l'attribut restore.

L'exemple suivant autorise deux identifiants de compte AWS, 123451234512 et 123456789012, à restaurer l'instantané appelé manual-snapshot1, et supprime la valeur de l'attribut all pour marquer l'instantané de base de données comme privé.

https://neptune.us-west-2.amazonaws.com/ ?Action=ModifyDBSnapshotAttribute &AttributeName=restore &DBSnapshotIdentifier=manual-snapshot1 &SignatureMethod=HmacSHA256&SignatureVersion=4 &ValuesToAdd.member.1=123451234512 &ValuesToAdd.member.2=123456789012 &ValuesToRemove.member.1=all &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150922/us-west-2/neptune/aws4_request &X-Amz-Date=20150922T220515Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=ef38f1ce3dab4e1dbf113d8d2a265c67d17ece1999ffd36be85714ed36dddbb3

Pour répertorier tous les comptes AWS autorisés à restaurer un instantané, utilisez l'action d'API DescribeDBSnapshotAttributes ou DescribeDBClusterSnapshotAttributes.