Comment puis-je masquer ou chiffrer mes informations d'identification de base de données dans AWS Data Pipeline ?

Dernière mise à jour : 19-03-2021

Je souhaite masquer ou chiffrer mes informations d'identification de base de données dans AWS Data Pipeline.

Brève description

Le pipeline de données chiffre les informations d'identification de la base de données lors du transfert. Toutefois, lorsque vous accédez au pipeline pendant l'exportation, le mot de passe de définition JSON du pipeline est visible.

Vous pouvez masquer vos informations d'identification de base de données dans le pipeline en effectuant l'une des opérations suivantes :

  • Créez et utilisez des balises pour empêcher des utilisateurs AWS Identity and Access Management (IAM) de voir votre mot de passe.
  • Créez une Amazon Machine Image (AMI) personnalisée en exportant les informations d'identification de base de données en tant que variables d'environnement.
  • Utilisez AWS Secrets Manager pour stocker votre mot de passe de base de données dans le pipeline.

Solution

Balisage

Vous pouvez accorder à vos utilisateurs AWS Identity Access Management (AWS IAM) un accès complet ou restreint aux pipelines en fonction de balises.

Pour empêcher des utilisateurs IAM d'afficher le mot de passe, créez et attachez une stratégie IAM qui autorise l'utilisation d'actions Data Pipeline en lecture seule, telles que Describe, GetPipelineDefinition et QueryObjects. Pour plus d'informations, consultez Exemples de stratégies pour AWS Data Pipeline.

AMI personnalisée

Vous pouvez sécuriser vos informations d'identification de base de données dans le pipeline en procédant comme suit :

1.     Exportez votre nom d'utilisateur et votre mot de passe de base de données en tant que variables d'environnement sur votre instance Amazon Elastic Compute Cloud (Amazon EC2) : exécutez la commande suivante pour exporter les informations d'identification de base de données en tant que variables d'environnement sur votre instance Amazon EC2 :

sudo vi /etc/profile
export USERNAME=awsuser
export PASSWORD=

2.     Créez une AMI personnalisée à partir de l'instance Amazon EC2.

3.    Transmettez cette variable dans une méthode de connexion PostgreSQL à l'instance de base de données en tant que ShellCommandActivity : définissez la ShellCommandActivity suivante à l'aide de Data Pipeline Architect :

psql "host=redshiftendpoint port=5439 dbname=Dbname user=$USERNAME password=$PASSWORD" -c "select 1;"

AWS Secrets Manager

Le moyen le plus sûr de chiffrer vos informations d'identification de base de données dans le pipeline consiste à effectuer les opérations suivantes :

  1. Utilisez AWS Secrets Manager pour stocker votre mot de passe.
  2. Installez PostgreSQL pour vous connecter à une instance de base de données Redshift ou SQL Workbench pour vous connecter à d'autres instances de base de données.

Vous pouvez utiliser AWS Secrets Manager pour stocker le mot de passe en tant que variable d'environnement. Vous pouvez ensuite transmettre cette variable dans une méthode de connexion PostgreSQL à l'instance de base de données en tant que ShellCommandActivity. Pour plus d'informations, consultez Connectez-vous à votre cluster à l'aide de l'outil psql.

1.    Créez et stockez vos informations d'identification de base de données Redshift dans AWS Secrets Manager.

2.    Attachez la stratégie suivante au rôle DataIPelineDefaultResource pour accorder un accès liste/lecture au secret stocké dans AWS Secret Manager :

{
"Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SecretPolicytoretrievesecretvalue",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:1111222233334444:secret:mysecret/secret-10aaPx"
        }
    ]
}

Remplacez ce qui suit dans la stratégie ci-dessus :

  • us-east-1 par la région où se trouve votre secret
  • 1111222233334444 par l'ID de votre compte AWS
  • mysecret par le nom de votre dossier virtuel
  • secret-10aaPx par le nom de votre secret

3.    Définissez la ShellCommandActivity suivante à l'aide de Data Pipeline Architect :

sudo yum -y install aws-cli jq postgresql95-server.x86_64 postgresql95-contrib.x86_64 postgresql95.x86_64 postgresql95-libs.x86_64 && export USERNAME=`aws secretsmanager get-secret-value --secret-id mysecret/secret --region regionname | jq -r '.SecretString' | cut -f4 -d \"\\\"\"` && export AWS_REGION=region_name && export PASSWORD=`aws secretsmanager get-secret-value --secret-id mysecret/secret --region region_name | jq -r '.SecretString' | cut -f8 -d \"\\\"\"` && psql "host=redshiftendpointname port=5439 dbname=sampledbname user=$USERNAME password=$PASSWORD" -c "select 1";

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?