Référencement des secrets AWS Secrets Manager à partir des paramètres Parameter Store - AWS Systems Manager

Référencement des secrets AWS Secrets Manager à partir des paramètres Parameter Store

AWS Secrets Manager vous permet d'organiser et de gérer des données de configuration importantes telles que les informations d'identification, les mots de passe et les clés de licence. Parameter Store, une des fonctionnalités de AWS Systems Manager, est désormais intégré à Secrets Manager afin que vous puissiez récupérer les secrets AWS lors de l'utilisation d'autres services Secrets Manager qui prennent déjà en charge les références aux paramètres Parameter Store. Ces services comprennent Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), AWS Lambda, AWS CloudFormation, AWS CodeBuild, AWS CodeDeploy et d'autres fonctionnalités de Systems Manager. Si vous utilisez Parameter Store pour référencer les secrets Secrets Manager, vous créez un processus cohérent et sécurisé permettant d'appeler et d'utiliser les secrets, ainsi que de référencer les données dans votre code et vos scripts de configuration.

Pour plus d'informations sur la création et la gestion de Secrets Manager, consultez Qu'est-ce qu'AWS Secrets Manager ? dans le Guide de l'utilisateur AWS Secrets Manager.

Restrictions

Notez les restrictions suivantes lorsque vous utilisez Parameter Store pour référencer des secrets Secrets Manager :

  • Vous ne pouvez récupérer des secrets Secrets Manager qu'en utilisant les opérations d'API GetParameter et GetParameters. Les opérations de modification et les opérations d'API d'interrogation avancée, telles que DescribeParameters ou GetParametersByPath, ne sont pas prises en charge pour Secrets Manager.

  • Vous pouvez utiliser l'AWS Command Line Interface (AWS CLI), les AWS Tools for Windows PowerShell et les kits SDK pour récupérer un secret à l'aide de Parameter Store.

  • Lorsque vous récupérez un secret Secrets Manager à partir de Parameter Store, le nom doit commencer par le chemin d'accès réservé suivant : /aws/reference/secretsmanager/secret_ID_in_Secrets_Manager.

    Voici un exemple: /aws/reference/secretsmanager/CFCreds1

  • Parameter Store honore les politiques AWS Identity and Access Management (IAM) attachées aux secrets Secrets Manager. Par exemple, si l'utilisateur 1 n'a pas accès à Secret A, l'utilisateur 1 ne peut pas récupérer Secret A à l'aide de Parameter Store.

  • Les paramètres qui référencent des secrets Secrets Manager ne peuvent pas utiliser les fonctions d'historique ou de gestion des versions Parameter Store.

  • Parameter Store honore les étapes de version de Secrets Manager. Si vous référencez une étape de version, celle-ci utilise uniquement des lettres, des chiffres, un point (.), un tiret (-) ou un trait de soulignement (_). Tous les autres symboles spécifiés dans l'étape de version entraînent l'échec de la référence.

Procédure de référencement d'un secret Secrets Manager en utilisant Parameter Store

La procédure suivante explique comment référencer un secret Secrets Manager à l'aide des API Parameter Store. La procédure fait référence à d'autres procédures dans le Guide de l'utilisateur AWS Secrets Manager.

Note

Avant de commencer, vérifiez que vous êtes autorisé à référencer des secrets Secrets Manager dans des paramètres Parameter Store. Si vous disposez d'autorisations administrateur dans Secrets Manager et Systems Manager, vous pouvez référencer ou extraire des secrets en utilisant des API Parameter Store. Si vous référencez un secret Secrets Manager dans un paramètre Parameter Store et que vous n'avez pas l'autorisation d'accéder à ce secret, la référence échoue. Pour plus d'informations, consultez Authentification et contrôle d'accès pour AWS Secrets Manager dans le Guide de l'utilisateur AWS Secrets Manager.

Important

Parameter Store fonctionne comme un service de passerelle pour les références aux secrets Secrets Manager. Parameter Store ne conserve pas les données ni les métadonnées relatives aux secrets. La référence est sans état.

Pour référencer un secret Secrets Manager en utilisant Parameter Store

  1. Créez un secret dans Secrets Manager. Pour plus d'informations, consultez Création et gestion des secrets avec AWS Secrets Manager.

  2. Référencez un secret à l'aide de l'AWS CLI, des AWS Tools for Windows PowerShell ou du kit SDK. Lorsque vous référencez un secret Secrets Manager, le nom doit commencer par le chemin d'accès réservé suivant : /aws/reference/secretsmanager/. En spécifiant ce chemin, Secrets Manager sait comment récupérer le secret à partir de Secrets Manager au lieu de Parameter Store. Voici quelques exemples de noms qui référencent correctement les secrets Secrets Manager, CFCreds1 et DBPass, en utilisant Parameter Store.

    • /aws/reference/secretsmanager/CFCreds1

    • /aws/reference/secretsmanager/DBPass

    Voici un exemple de code Java qui référence une clé d'accès et une clé secrète stockées dans Secrets Manager. Cet exemple de code configure un client Amazon DynamoDB. Le code récupère les informations d'identification et les données de configuration à partir de Parameter Store. Les données de configuration sont stockées en tant que paramètre de chaîne dans Parameter Store et les informations d'identification sont stockées dans Secrets Manager. Bien que les données de configuration et les informations d'identification soient stockées dans des services distincts, les deux ensembles de données sont accessibles à partir de Parameter Store à l'aide de l'API GetParameter.

    /** * Initialize System Manager Client with default credentials */ AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient(); ... /** * Example method to launch DynamoDB client with credentials different from default * @return DynamoDB client */ AmazonDynamoDB getDynamoDbClient() { //Getting AWS credentials from Secrets Manager using GetParameter BasicAWSCredentials differentAWSCreds = new BasicAWSCredentials( getParameter("/aws/reference/secretsmanager/access-key"), getParameter("/aws/reference/secretsmanager/secret-key")); //Initialize the DDB Client with different credentials final AmazonDynamoDB client = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds)) .withRegion(getParameter("region")) //Getting config from Parameter Store .build(); return client; } /** * Helper method to retrieve SSM Parameter's value * @param parameterName identifier of the SSM Parameter * @return decrypted parameter value */ public GetParameterResult getParameter(String parameterName) { GetParameterRequest request = new GetParameterRequest(); request.setName(parameterName); request.setWithDecryption(true); return ssm.newGetParameterCall().call(request).getParameter().getValue(); }

    Voici quelques exemples d'AWS CLI. Utilisez la commande aws secretsmanager list-secrets pour trouver les noms de vos secrets.

    AWS CLI Exemple 1 : Référence à l'aide du nom du secret

    Linux & macOS
    aws ssm get-parameter \ --name /aws/reference/secretsmanager/s1-secret \ --with-decryption
    Windows
    aws ssm get-parameter ^ --name /aws/reference/secretsmanager/s1-secret ^ --with-decryption

    La commande renvoie des informations telles que les suivantes.

    {
        "Parameter": {
            "Name": "/aws/reference/secretsmanager/s1-secret",
            "Type": "SecureString",
            "Value": "Fl*MEishm!al875",
            "Version": 0,
            "SourceResult": 
                  "{
                       \"CreatedDate\": 1526334434.743,
                       \"Name\": \"s1-secret\",
                       \"VersionId\": \"aaabbbccc-1111-222-333-123456789\",
                       \"SecretString\": \"Fl*MEishm!al875\",
                       \"VersionStages\": [\"AWSCURRENT\"],
                       \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                   }"
            "LastModifiedDate": 2018-05-14T21:47:14.743Z,
            "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                   E18LRP",
          }
    }

    AWS CLI Exemple 2 : Référence qui inclut l'ID de la version

    Linux & macOS
    aws ssm get-parameter \ --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 \ --with-decryption
    Windows
    aws ssm get-parameter ^ --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 ^ --with-decryption

    La commande renvoie des informations telles que les suivantes.

    {
        "Parameter": {
            "Name": "/aws/reference/secretsmanager/s1-secret",
            "Type": "SecureString",
            "Value": "Fl*MEishm!al875",
            "Version": 0,
            "SourceResult": 
                  "{
                       \"CreatedDate\": 1526334434.743,
                       \"Name\": \"s1-secret\",
                       \"VersionId\": \"11111-aaa-bbb-ccc-123456789\",
                       \"SecretString\": \"Fl*MEishm!al875\",
                       \"VersionStages\": [\"AWSCURRENT\"],
                       \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                   }"
            "Selector": ":11111-aaa-bbb-ccc-123456789"
          }
            "LastModifiedDate": 2018-05-14T21:47:14.743Z,
            "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                   E18LRP",
    }
    

    AWS CLI Exemple 3 : Référence qui inclut l'étape de la version

    Linux & macOS
    aws ssm get-parameter \ --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT \ --with-decryption
    Windows
    aws ssm get-parameter ^ --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT ^ --with-decryption

    La commande renvoie des informations telles que les suivantes.

    {
        "Parameter": {
            "Name": "/aws/reference/secretsmanager/s1-secret",
            "Type": "SecureString",
            "Value": "Fl*MEishm!al875",
            "Version": 0,
            "SourceResult": 
                  "{
                       \"CreatedDate\": 1526334434.743,
                       \"Name\": \"s1-secret\",
                       \"VersionId\": \"11111-aaa-bbb-ccc-123456789\",
                       \"SecretString\": \"Fl*MEishm!al875\",
                       \"VersionStages\": [\"AWSCURRENT\"],
                       \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                   }"
            "Selector": ":AWSCURRENT"
          }
          "LastModifiedDate": 2018-05-14T21:47:14.743Z,
          "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                    E18LRP",
    }