Referencia a los secretos de AWS Secrets Manager desde los parámetros de Parameter Store - AWS Systems Manager

Referencia a los secretos de AWS Secrets Manager desde los parámetros de Parameter Store

AWS Secrets Manager ayuda a organizar y administrar los datos de configuración importantes, como las credenciales, las contraseñas y las claves de licencia. Parameter Store, una capacidad de AWS Systems Manager, está integrado a Secrets Manager, lo que le permite recuperar secretos de Secrets Manager cuando se utilizan otros Servicios de AWS que ya admiten las referencias a los parámetros de Parameter Store. Estos servicios incluyen Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), AWS Lambda, AWS CloudFormation, AWS CodeBuild, AWS CodeDeploy y otras capacidades de Systems Manager. Si se utiliza Parameter Store para hacer referencia a los secretos de Secrets Manager, se crea un proceso consistente y seguro para llamar y utilizar secretos y datos de referencia en el código y los scripts de configuración.

Para obtener más información acerca de Secrets Manager, consulte ¿Qué es AWS Secrets Manager? en la Guía del usuario de AWS Secrets Manager.

Restricciones

Tenga en cuenta las siguientes restricciones cuando utilice Parameter Store para hacer referencia a los secretos de Secrets Manager:

  • Solo se pueden recuperar secretos de Secrets Manager utilizando las operaciones GetParameter y GetParameters de la API. Las operaciones de modificación y de consulta avanzada de la API, como, por ejemplo, DescribeParameters y GetParametersByPath, no se admiten en Secrets Manager.

  • Puede utilizar la AWS Command Line Interface (AWS CLI), las AWS Tools for Windows PowerShell y los SDK para recuperar un secreto mediante Parameter Store.

  • Cuando se recupera un secreto de Secrets Manager desde Parameter Store, el nombre debe comenzar por la siguiente ruta reservada: /aws/reference/secretsmanager/secret-_ID.

    A continuación se muestra un ejemplo: /aws/reference/secretsmanager/CFCreds1

  • Parameter Store respeta las políticas de AWS Identity and Access Management (IAM) adjuntas a los secretos de Secrets Manager. Por ejemplo, si el usuario 1 no tiene acceso al secreto A, el usuario 1 no puede recuperar el secreto A mediante Parameter Store.

  • Los parámetros que hacen referencia a los secretos de Secrets Manager no pueden utilizar las características de historial ni de control de versiones de Parameter Store.

  • Parameter Store respeta las fases de la versión de Secrets Manager. Si se hace referencia a una fase de la versión, se utilizan letras, números, puntos (.), guiones (-) o guiones bajos (_). Si se especifica cualquier otro símbolo en la fase de la versión, la referencia producirá un error.

Cómo hacer referencia a un secreto de Secrets Manager con Parameter Store

En el siguiente procedimiento, se describe cómo hacer referencia a un secreto de Secrets Manager utilizando las API de Parameter Store. El procedimiento hace referencia a otros procedimientos de la Guía del usuario de AWS Secrets Manager.

nota

Antes de comenzar, compruebe que tiene permiso para hacer referencia a los secretos de Secrets Manager en los parámetros de Parameter Store. Si tiene permisos de administrador en Secrets Manager y Systems Manager, puede hacer referencia o recuperar secretos utilizando las API de Parameter Store. Si hace referencia a un secreto de Secrets Manager en un parámetro de Parameter Store y no tiene permiso para acceder a ese secreto, la referencia producirá un error. Para obtener más información, consulte Autenticación y control de acceso para AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.

importante

Parameter Store funciona como un servicio de transferencia para las referencias a los secretos de Secrets Manager. Parameter Store no conserva los datos ni los metadatos de los secretos. La referencia es sin estado.

Para hacer referencia a un secreto Secrets Manager mediante el uso de Parameter Store
  1. Cree un secreto en Secrets Manager. Para obtener más información, consulte Cree y administre secretos con AWS Secrets Manager.

  2. Haga referencia a un secreto utilizando la AWS CLI, AWS Tools for Windows PowerShell o el SDK. Cuando haga referencia a un secreto de Secrets Manager, el nombre debe comenzar por la siguiente ruta reservada: /aws/reference/secretsmanager/. Cuando se especifica esta ruta, Systems Manager sabe que tiene que recuperar el secreto desde Secrets Manager en lugar de desde Parameter Store. A continuación, se presentan algunos ejemplos de nombres que hacen referencia correctamente a los secretos de Secrets Manager, CFCreds1 y DBPass, mediante Parameter Store.

    • /aws/reference/secretsmanager/CFCreds1

    • /aws/reference/secretsmanager/DBPass

    A continuación, se muestra un ejemplo de código Java que hace referencia a una clave de acceso y una clave secreta que están almacenadas en Secrets Manager. En este ejemplo de código, se configura un cliente de Amazon DynamoDB. El código recupera los datos de configuración y las credenciales de Parameter Store. Los datos de configuración se almacenan como un parámetro de cadena en Parameter Store y las credenciales se almacenan en Secrets Manager. Aunque los datos de configuración y las credenciales se almacenan en servicios independientes, es posible acceder a ambos conjuntos de datos desde Parameter Store mediante la API GetParameter.

    /** * Initialize Systems 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 DynamoDB client with different credentials final AmazonDynamoDB client = AmazonDynamoDBClient.builder() .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds)) .withRegion(getParameter("region")) //Getting configuration from Parameter Store .build(); return client; } /** * Helper method to retrieve parameter value * @param parameterName identifier of the 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(); }

    A continuación, se muestran algunos ejemplos de la AWS CLI. Use el comando aws secretsmanager list-secrets para encontrar los nombres de sus secretos.

    AWS CLI Ejemplo 1 de la : referencia mediante el nombre del secreto

    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

    El comando devuelve información similar a la siguiente.

    {
        "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 Ejemplo 2 de la : referencia que incluye el ID de versión

    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

    El comando devuelve información similar a la siguiente.

    {
        "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 Ejemplo 3 de la : referencia que incluye la fase de la versión

    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

    El comando devuelve información similar a la siguiente.

    {
        "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",
    }