Utilisation de secrets pour accéder aux points de terminaison AWS Database Migration Service - AWS Service de Migration de Base de Données

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.

Utilisation de secrets pour accéder aux points de terminaison AWS Database Migration Service

En effet AWS DMS, un secret est une clé cryptée que vous pouvez utiliser pour représenter un ensemble d'informations d'identification utilisateur afin d'authentifier, par le biais d'une authentification secrète, la connexion à la base de données pour un point de terminaison AWS DMS source ou cible pris en charge. Pour un point de terminaison Oracle qui utilise également Oracle Automatic Storage Management (ASM), AWS DMS nécessite un secret supplémentaire représentant les informations d'identification de l'utilisateur pour accéder à Oracle ASM.

Vous pouvez créer le ou les secrets qui AWS DMS nécessitent une authentification secrète à l'aide AWS Secrets Manager d'un service permettant de créer, de stocker et de récupérer en toute sécurité des informations d'identification pour accéder aux applications, aux services et aux ressources informatiques dans le cloud et sur site. Cela inclut la prise en charge de la rotation périodique automatique de la valeur de secret chiffrée sans votre intervention, offrant ainsi un niveau de sécurité supplémentaire pour vos informations d’identification. L'activation de la rotation des valeurs secrètes garantit AWS Secrets Manager également que cette rotation des valeurs secrètes s'effectue sans aucun effet sur la migration de base de données qui repose sur le secret. Pour authentifier secrètement une connexion à une base de données de point de terminaison, créez un secret dont vous affectez l’identité ou l’ARN à SecretsManagerSecretId, que vous incluez dans les paramètres du point de terminaison. Pour authentifier secrètement Oracle ASM dans le cadre d’un point de terminaison Oracle, créez un secret dont vous affectez l’identité ou l’ARN à SecretsManagerOracleAsmSecretId, que vous incluez également dans les paramètres du point de terminaison.

Note

Vous ne pouvez pas utiliser les informations d’identification principales gérées par Amazon RDS Aurora. Ces informations d'identification n'incluent pas les informations relatives à l'hôte ou au port, qui sont AWS DMS nécessaires pour établir des connexions. Créez plutôt un nouvel utilisateur et un nouveau secret. Pour en savoir plus sur la création d’un utilisateur et d’un secret, consultez la section Utilisation du AWS Management Console pour créer un rôle d'accès secret et secret ci-dessous.

Pour plus d'informations AWS Secrets Manager, voir Qu'est-ce que AWS Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur.

AWS DMS prend en charge l'authentification secrète pour les bases de données sur site ou AWS gérées suivantes sur les points de terminaison source et cible pris en charge :

  • Amazon DocumentDB

  • IBM Db2 LUW

  • Microsoft SQL Server

  • MongoDB

  • MySQL

  • Oracle

  • PostgreSQL

  • Amazon Redshift

  • SAP ASE

Pour vous connecter à l’une de ces bases de données, vous pouvez entrer l’un des ensembles de valeurs suivants, mais pas les deux, dans les paramètres du point de terminaison :

  • Valeurs en texte clair pour authentifier la connexion à la base de données à l’aide des paramètres UserName, Password, ServerName et Port. Pour un point de terminaison Oracle qui utilise également Oracle ASM, incluez des valeurs en texte clair supplémentaires pour authentifier ASM à l’aide des paramètres AsmUserName, AsmPassword et AsmServerName.

  • Authentification secrète à l’aide de valeurs pour les paramètres SecretsManagerSecretId et SecretsManagerAccessRoleArn. Pour un point de terminaison Oracle utilisant Oracle ASM, incluez des valeurs supplémentaires pour les paramètres SecretsManagerOracleAsmSecretId et SecretsManagerOracleAsmAccessRoleArn. Les valeurs de secret de ces paramètres peuvent inclure les valeurs suivantes pour :

    • SecretsManagerSecretId : Amazon Resource Name (ARN) complet, ARN partiel ou nom convivial d’un secret que vous avez créé dans AWS Secrets Manager pour accéder à la base de données du point de terminaison.

    • SecretsManagerAccessRoleArn— L'ARN d'un rôle d'accès secret que vous avez créé dans IAM pour permettre AWS DMS l'accès à ce SecretsManagerSecretId secret en votre nom.

    • SecretsManagerOracleAsmSecretId : Amazon Resource Name (ARN) complet, ARN partiel ou nom convivial d’un secret que vous avez créé dans AWS Secrets Manager pour accéder à Oracle ASM.

    • SecretsManagerOracleAsmAccessRoleArn : ARN d’un rôle d’accès secret que vous avez créé dans IAM pour permettre à AWS DMS d’accéder en votre nom à ce secret SecretsManagerOracleAsmSecretId.

    Note

    Vous pouvez également utiliser un rôle d'accès secret unique pour fournir un AWS DMS accès à la fois au SecretsManagerSecretId secret et au SecretsManagerOracleAsmSecretId secret. Si vous créez ce rôle d’accès secret unique pour les deux secrets, assurez-vous d’affecter le même ARN pour ce rôle d’accès à SecretsManagerAccessRoleArn et SecretsManagerOracleAsmAccessRoleArn. Par exemple, si l’ARN de votre rôle d’accès secret pour les deux secrets est affecté à la variable ARN2xsecrets, vous pouvez définir ces paramètres d’ARN comme suit :

    SecretsManagerAccessRoleArn = ARN2xsecrets; SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;

    Pour plus d’informations sur la création de ces valeurs, consultez Utilisation du AWS Management Console pour créer un rôle d'accès secret et secret.

Après avoir créé et spécifié les paramètres de point de terminaison du secret et du rôle d’accès secret requis pour vos points de terminaison, mettez à jour les autorisations sur les comptes d’utilisateurs qui exécuteront la demande d’API CreateEndpoint ou ModifyEndpoint avec ces détails de secret. Assurez-vous que ces autorisations de compte incluent l'IAM:GetRoleautorisation sur le rôle d'accès secret et l'SecretsManager:DescribeSecretautorisation sur le secret. AWS DMS nécessite ces autorisations pour valider à la fois le rôle d'accès et son secret.

Pour fournir et vérifier les autorisations utilisateur requises
  1. Connectez-vous à la AWS Identity and Access Management console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/iam/.

  2. Choisissez Utilisateurs, puis sélectionnez l’ID utilisateur utilisé pour effectuer des appels d’API CreateEndpoint et ModifyEndpoint.

  3. Dans l’onglet Autorisations, choisissez {} JSON.

  4. Assurez-vous que l’utilisateur dispose des autorisations suivantes.

    { "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "SECRET_ACCESS_ROLE_ARN" }, { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "SECRET_ARN" } ] }
  5. Si l’utilisateur ne dispose pas de ces autorisations, ajoutez-les.

  6. Si vous utilisez un rôle IAM pour effectuer des appels d’API DMS, répétez les étapes ci-dessus pour le rôle correspondant.

  7. Ouvrez un terminal et utilisez le AWS CLI pour vérifier que les autorisations sont correctement accordées en assumant le rôle ou l'utilisateur utilisé ci-dessus.

    1. Validez l'autorisation de l'utilisateur SecretAccessRole à l'aide de la get-role commande IAM.

      aws iam get-role --role-name ROLE_NAME

      Remplacez ROLE_NAME par le nom de SecretsManagerAccessRole.

      Si la commande renvoie un message d’erreur, assurez-vous que les autorisations ont été correctement accordées.

    2. Validez l’autorisation de l’utilisateur sur le secret à l’aide de la commande Secrets Manager describe-secret.

      aws secretsmanager describe-secret --secret-id SECRET_NAME OR SECRET_ARN --region=REGION_NAME

      L’utilisateur peut être le nom convivial, l’ARN partiel ou l’ARN complet. Pour plus d’informations, consultez describe-secret.

      Si la commande renvoie un message d’erreur, assurez-vous que les autorisations ont été correctement accordées.

Utilisation du AWS Management Console pour créer un rôle d'accès secret et secret

Vous pouvez utiliser le AWS Management Console pour créer un secret pour l'authentification des terminaux et pour créer la politique et le rôle AWS DMS permettant d'accéder au secret en votre nom.

Pour créer un secret à l'aide du AWS Management Console qui AWS DMS peut être utilisé pour authentifier une base de données pour les connexions aux points de terminaison source et cible
  1. Connectez-vous à la AWS Secrets Manager console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/secretsmanager/.

  2. Choisissez Store a new secret (Stocker un nouveau secret).

  3. Sous Sélectionner un type de secret sur la page Stocker un nouveau secret, choisissez Autre type de secrets, puis Texte brut.

    Note

    C’est le seul endroit où vous devez entrer des informations d’identification en texte clair pour vous connecter à la base de données de point de terminaison à partir de maintenant.

  4. Dans le champ Texte brut :

    • Pour un secret dont vous affectez l’identité à SecretsManagerSecretId, entrez la structure JSON suivante.

      { "username": db_username, "password": db_user_password, "port": db_port_number, "host": db_server_name }
      Note

      Il s’agit de la liste minimale de membres JSON requis pour authentifier la base de données de point de terminaison. Vous pouvez ajouter n’importe quel paramètre de point de terminaison JSON supplémentaire en tant que membre JSON, tout en minuscules. Toutefois, AWS DMS ignore tout membre JSON supplémentaire pour l’authentification du point de terminaison.

      Ici, db_username est le nom de l’utilisateur accédant à la base de données, db_user_password est le mot de passe de l’utilisateur de base de données, db_port_number est le numéro de port permettant d’accéder à la base de données et db_server_name est le nom du serveur de base de données (adresse) sur le web, comme dans l’exemple suivant.

      { "username": "admin", "password": "some_password", "port": "8190", "host": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com" }
    • Pour un secret dont vous affectez l’identité à SecretsManagerOracleAsmSecretId, entrez la structure JSON suivante.

      { "asm_user": asm_username, "asm_password": asm_user_password, "asm_server": asm_server_name }
      Note

      Il s’agit de la liste minimale de membres JSON requis pour authentifier Oracle ASM pour un point de terminaison Oracle. Il s’agit également de la liste complète que vous pouvez spécifier en fonction des paramètres de point de terminaison Oracle ASM disponibles.

      Ici, asm_username est le nom de l’utilisateur accédant à Oracle ASM, asm_user_password est le mot de passe de l’utilisateur Oracle ASM et asm_server_name est le nom du serveur Oracle ASM (adresse) sur le web, qui comprend le port, comme dans l’exemple suivant.

      { "asm_user": "oracle_asm_user", "asm_password": "oracle_asm_password", "asm_server": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com:8190/+ASM" }
  5. Sélectionnez une clé de AWS KMS chiffrement pour chiffrer le secret. Vous pouvez accepter la clé de chiffrement par défaut créée pour votre service AWS Secrets Manager ou sélectionner une AWS KMS clé que vous créez.

  6. Spécifiez un nom pour faire référence à ce secret et une description facultative. Il s’agit du nom convivial que vous utilisez comme valeur pour SecretsManagerSecretId ou SecretsManagerOracleAsmSecretId.

  7. Si vous souhaitez activer la rotation automatique du secret, vous devez sélectionner ou créer une AWS Lambda fonction avec l'autorisation de faire pivoter les informations d'identification du secret comme décrit. Toutefois, avant de configurer la rotation automatique pour utiliser votre fonction Lambda, assurez-vous que les paramètres de configuration de la fonction ajoutent les quatre caractères suivants à la valeur de la variable d’environnement EXCLUDE_CHARACTERS.

    ;.:+{}

    AWS DMS n'autorise pas ces caractères dans les mots de passe utilisés pour les informations d'identification des terminaux. En configurant votre fonction Lambda de sorte à les exclure, AWS Secrets Manager ne peut pas générer ces caractères dans le cadre de la rotation des valeurs de mot de passe. Une fois que vous avez défini la rotation automatique pour utiliser votre fonction Lambda, fait AWS Secrets Manager immédiatement pivoter le secret pour valider votre configuration secrète.

    Note

    Selon la configuration de votre moteur de base de données, il est possible que la base de données ne récupère pas les informations d’identification ayant fait l’objet d’une rotation. Dans ce cas, vous devez redémarrer manuellement la tâche pour actualiser les informations d’identification.

  8. Passez en revue et conservez votre secret AWS Secrets Manager. Vous pouvez ensuite rechercher chaque secret par son nom convivial AWS Secrets Manager, puis récupérer l'ARN du secret en tant que valeur SecretsManagerSecretId ouSecretsManagerOracleAsmSecretId, le cas échéant, pour authentifier l'accès à la connexion à la base de données de votre point de terminaison et à Oracle ASM (le cas échéant).

Pour créer la politique d'accès secret et le rôle permettant de définir votre SecretsManagerAccessRoleArn ouSecretsManagerOracleAsmAccessRoleArn, ce qui permet d'accéder AWS DMSAWS Secrets Manager à votre secret approprié
  1. Connectez-vous à la console AWS Identity and Access Management (IAM) AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Sélectionnez Politiques, puis Créer une politique.

  3. Choisissez JSON et entrez la politique suivante pour permettre d’accéder à votre secret et de le déchiffrer.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": secret_arn, }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": kms_key_arn, } ] }

    Ici, secret_arn est l’ARN de votre secret, que vous pouvez obtenir à partir de SecretsManagerSecretId ou de SecretsManagerOracleAsmSecretId selon le cas, et kms_key_arn est l’ARN de la clé AWS KMS que vous utilisez pour chiffrer votre secret, comme dans l’exemple suivant.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-2:123456789012:secret:MySQLTestSecret-qeHamH" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/761138dc-0542-4e58-947f-4a3a8458d0fd" } ] }
    Note

    Si vous utilisez la clé de chiffrement par défaut créée par AWS Secrets Manager, il n'est pas nécessaire de spécifier les AWS KMS autorisations pourkms_key_arn.

    Si vous souhaitez que votre politique donne accès aux deux secrets, il vous suffit de spécifier un objet de ressource JSON supplémentaire pour l’autre secret_arn.

    Si votre secret se trouve dans un autre compte, le rôle SecretsManagerAccessRoleArn a besoin d’une politique supplémentaire pour vérifier le secret entre comptes. Pour de tels cas d’utilisation, ajoutez l’action secretsmanager:DescribeSecret à la politique. Pour plus de détails sur la configuration d'un secret multicompte, consultez la section Permissions to AWS Secrets Manager secrets secrets pour les utilisateurs d'un autre compte.

  4. Vérifiez et créez la politique avec un nom convivial et une description facultative.

  5. Choisissez Rôles, puis Créer un rôle.

  6. Choisissez Service AWS comme type d’entité de confiance.

  7. Choisissez DMS dans la liste des services comme service de confiance, puis choisissez Suivant : Autorisations.

  8. Recherchez et attachez la politique que vous avez créée à l’étape 4, puis ajoutez des balises et passez en revue votre rôle. À ce stade, modifiez les relations de confiance du rôle afin d'utiliser votre directeur de service AWS DMS régional comme entité de confiance. Ce principal a le format suivant.

    dms.region-name.amazonaws.com

    Ici, region-name est le nom de votre région, par exemple us-east-1. Voici donc un principe de service AWS DMS régional pour cette région.

    dms.us-east-1.amazonaws.com
  9. Après avoir modifié l’entité de confiance associée au rôle, créez le rôle avec un nom convivial et une description facultative. Vous pouvez désormais rechercher votre nouveau rôle par son nom convivial dans IAM, puis récupérer l’ARN du rôle sous forme de valeur SecretsManagerAccessRoleArn ou SecretsManagerOracleAsmAccessRoleArn pour authentifier la connexion à la base de données de votre point de terminaison.

Pour utiliser Secrets Manager avec une instance de réplication dans un sous-réseau privé
  1. Créez un point de terminaison de VPC Secrets Manager et notez le DNS du point de terminaison. Pour plus d’informations sur la création d’un point de terminaison de VPC Secrets Manager, consultez Connexion à Secrets Manager via un point de terminaison de VPC dans le Guide de l’utilisateur AWS Secrets Manager.

  2. Attachez le groupe de sécurité de l’instance de réplication au point de terminaison de VPC Secrets Manager.

  3. Pour les règles de sortie du groupe de sécurité de l’instance de réplication, autorisez l’ensemble du trafic pour la destination 0.0.0.0/0.

  4. Définissez l’attribut de connexion supplémentaire du point de terminaison secretsManagerEndpointOverride=secretsManager endpoint DNS de sorte à fournir le DNS du point de terminaison de VPC Secrets Manager, comme illustré dans l’exemple suivant.

    secretsManagerEndpointOverride=vpce-1234a5678b9012c-12345678.secretsmanager.eu-west-1.vpce.amazonaws.com