

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso del AWS Secrets Manager agente
<a name="secrets-manager-agent"></a>

## Cómo funciona el Agente de Secrets Manager
<a name="agent-overview"></a>

El AWS Secrets Manager agente es un servicio HTTP del lado del cliente que le ayuda a estandarizar la forma en que consume los secretos de Secrets Manager en todos sus entornos de cómputo. Puede utilizarlo con los siguientes servicios:
+ AWS Lambda
+ Amazon Elastic Container Service
+ Amazon Elastic Kubernetes Service
+ Amazon Elastic Compute Cloud

El Agente de Secrets Manager recupera y almacena en caché los secretos en la memoria, lo que permite que las aplicaciones obtengan secretos de localhost en lugar de tener que hacer llamadas directas a Secrets Manager. El Agente de Secrets Manager solo puede leer secretos, pero no modificarlos.

**importante**  
El agente de Secrets Manager utiliza las AWS credenciales de su entorno para llamar a Secrets Manager. Incluye protección contra la falsificación de solicitudes del lado del servidor (SSRF) para ayudar a mejorar la seguridad del secreto. El Agente de Secrets Manager, por defecto, utiliza el intercambio de claves ML-KEM poscuántico como el intercambio de claves de mayor prioridad..

## Comprensión del almacenamiento en caché del Agente de Secrets Manager
<a name="agent-caching"></a>

El Agente de Secrets Manager utiliza una caché en memoria que se restablece cuando se reinicia. Regularmente, actualiza los valores de secretos almacenados en caché según lo siguiente:
+ La frecuencia de actualización predeterminada (TTL) es de 300 segundos
+ Se puede modificar TTL mediante un archivo de configuración
+ La actualización se produce cuando se solicita un secreto después de que TTL caduque

**nota**  
El Agente de Secrets Manager no incluye la invalidación del caché. Si un secreto rota antes de que caduque la entrada del caché, el Agente de Secrets Manager podría devolver un valor secreto obsoleto.

El Agente de Secrets Manager devuelve los valores secretos en el mismo formato que la respuesta de `GetSecretValue`. Los valores de secretos no se cifran en caché.

**Topics**
+ [Cómo funciona el Agente de Secrets Manager](#agent-overview)
+ [Comprensión del almacenamiento en caché del Agente de Secrets Manager](#agent-caching)
+ [Compilación del Agente de Secrets Manager](#secrets-manager-agent-build)
+ [Instale el Agente de Secrets Manager](#secrets-manager-agent-install)
+ [Recuperación de secretos con el Agente de Secrets Manager](#secrets-manager-agent-call)
+ [Comprensión del parámetro `refreshNow`](#secrets-manager-agent-refresh)
+ [Configuración del Agente de Secrets Manager](#secrets-manager-agent-config)
+ [Características opcionales](#secrets-manager-agent-features)
+ [Registro](#secrets-manager-agent-log)
+ [Consideraciones de seguridad](#secrets-manager-agent-security)

## Compilación del Agente de Secrets Manager
<a name="secrets-manager-agent-build"></a>

Antes de comenzar, asegúrese de tener instaladas las herramientas de desarrollo estándar y las herramientas de Rust en la plataforma.

**nota**  
La compilación del agente con la característica `fips` habilitada en macOS requiere la siguiente solución alternativa:  
Cree una variable de entorno llamada `SDKROOT` que se establezca según el resultado de la ejecución de `xcrun --show-sdk-path`

------
#### [ RPM-based systems ]

**Cómo compilar sobre sistemas basados en RPM**

1. Use el script de `install` que se proporciona en el repositorio. 

   El script genera un token SSRF aleatorio al inicio y lo almacena en el archivo`/var/run/awssmatoken`. El grupo `awssmatokenreader` que crea el script de instalación puede leer el token. 

1. Para permitir que la aplicación lea el archivo de token, debe añadir, al grupo `awssmatokenreader`, la cuenta de usuario con la que se ejecuta la aplicación. Por ejemplo, puede conceder permisos para que su aplicación lea el archivo de token con el siguiente comando usermod, que *<APP\$1USER>* es el ID de usuario con el que se ejecuta la aplicación.

   ```
   sudo usermod -aG awssmatokenreader <APP_USER>
   ```

**Instale las herramientas de desarrollo**  
En sistemas basados en RPM, por ejemplo AL2023, instale el grupo de herramientas de desarrollo:

   ```
   sudo yum -y groupinstall "Development Tools"
   ```

1. 

**Instale Rust**  
Siga las instrucciones de [Instalar Rust](https://www.rust-lang.org/tools/install) en la *documentación de Rust*.

   ```
   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Follow the on-screen instructions
   . "$HOME/.cargo/env"
   ```

1. 

**Compile el agente**  
Compile el Agente de Secrets Manager mediante el comando cargo build:

   ```
   cargo build --release
   ```

   Encontrará el ejecutable en `target/release/aws_secretsmanager_agent`.

------
#### [ Debian-based systems ]

**Cómo compilar en sistemas basados en Debian**

1. 

**Instale las herramientas de desarrollo**  
En sistemas basados en Debian, como Ubuntu, instale el paquete build-essential:

   ```
   sudo apt install build-essential
   ```

1. 

**Instale Rust**  
Siga las instrucciones de [Instalar Rust](https://www.rust-lang.org/tools/install) en la *documentación de Rust*.

   ```
   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Follow the on-screen instructions
   . "$HOME/.cargo/env"
   ```

1. 

**Compile el agente**  
Compile el Agente de Secrets Manager mediante el comando cargo build:

   ```
   cargo build --release
   ```

   Encontrará el ejecutable en `target/release/aws_secretsmanager_agent`.

------
#### [ Windows ]

**Cómo compilar en Windows**

1. 

**Establezca un entorno de desarrollo**  
Siga las instrucciones de [Configurar el entorno de desarrollo en Windows para Rust](https://learn.microsoft.com/en-us/windows/dev-environment/rust/setup) en la *documentación de Microsoft Windows*.

1. 

**Compile el agente**  
Compile el Agente de Secrets Manager mediante el comando cargo build:

   ```
   cargo build --release
   ```

   Encontrará el ejecutable en `target/release/aws_secretsmanager_agent.exe`.

------
#### [ Cross-compile natively ]

**Cómo compilar de forma cruzada de forma nativa**

1. 

**Instale las herramientas de compilación cruzada**  
En las distribuciones en las que está disponible el paquete mingw-w64, como Ubuntu, instale la cadena de herramientas de compilaciones cruzadas:

   ```
   # Install the cross compile tool chain
   sudo add-apt-repository universe
   sudo apt install -y mingw-w64
   ```

1. 

**Agregue los destinos de compilación de Rust**  
Instale el destino de compilación para Windows GNU:

   ```
   rustup target add x86_64-pc-windows-gnu
   ```

1. 

**Compile para Windows**  
Compile de forma cruzada el agente para Windows:

   ```
   cargo build --release --target x86_64-pc-windows-gnu
   ```

   Encontrará el ejecutable en `target/x86_64-pc-windows-gnu/release/aws_secretsmanager_agent.exe`.

------
#### [ Cross compile with Rust cross ]

**Cómo realizar una compilación cruzada con Rust cross**

Si las herramientas de compilación cruzada no están disponibles de forma nativa en el sistema, puede utilizar el proyecto de Rust cross. [Para obtener más información, consulte https://github.com/cross-rs/ cross.](https://github.com/cross-rs/cross)
**importante**  
Recomendamos 32 GB de espacio en disco para el entorno de compilación.

1. 

**Configuración de Docker**  
Instale y configure Docker

   ```
   # Install and start docker
   sudo yum -y install docker
   sudo systemctl start docker
   sudo systemctl enable docker # Make docker start after reboot
   ```

1. 

**Configure los permisos de Docker**  
Agregue su usuario al grupo de Docker

   ```
   # Give ourselves permission to run the docker images without sudo
   sudo usermod -aG docker $USER
   newgrp docker
   ```

1. 

**Compile para Windows**  
Instale cross y compile el ejecutable:

   ```
   # Install cross and cross compile the executable
   cargo install cross
   cross build --release --target x86_64-pc-windows-gnu
   ```

------

## Instale el Agente de Secrets Manager
<a name="secrets-manager-agent-install"></a>

Elija su entorno informático entre las siguientes opciones de instalación.

------
#### [ Amazon EC2 ]

**Cómo instalar el Agente de Secrets Manager en Amazon EC2**

1. 

**Diríjase hasta el directorio de configuración**  
Cambie al directorio de configuración:

   ```
   cd aws_secretsmanager_agent/configuration
   ```

1. 

**Ejecute el script de instalación**  
Utilice el script de `install` que se proporciona en el repositorio.

   El script genera un token SSRF aleatorio al inicio y lo almacena en el archivo`/var/run/awssmatoken`. El grupo `awssmatokenreader` que crea el script de instalación puede leer el token.

1. 

**Configuración de permisos de aplicación**  
Agregue al grupo `awssmatokenreader` la cuenta de usuario con la que se ejecuta la aplicación:

   ```
   sudo usermod -aG awssmatokenreader APP_USER
   ```

   *APP\$1USER*Sustitúyalo por el seudónimo con el que se ejecuta la aplicación.

------
#### [ Container Sidecar ]

Puede ejecutar el Agente de Secrets Manager como un contenedor lateral junto con la aplicación mediante Docker. Luego, su aplicación puede recuperar los secretos del servidor HTTP local que proporciona el Agente de Secrets Manager. Para obtener más información sobre Docker, consulte la[ documentación de Docker](https://docs.docker.com).

**Cómo crear un contenedor lateral para el Agente de Secrets Manager**

1. 

**Cree un archivo Dockerfile.**  
Cree un Dockerfile para el contenedor lateral del Agente de Secrets Manager:

   ```
   # Use the latest Debian image as the base
   FROM debian:latest
   
   # Set the working directory inside the container
   WORKDIR /app 
   
   # Copy the Secrets Manager Agent binary to the container
   COPY secrets-manager-agent . 
   
   # Install any necessary dependencies
   RUN apt-get update && apt-get install -y ca-certificates 
   
   # Set the entry point to run the Secrets Manager Agent binary
   ENTRYPOINT ["./secrets-manager-agent"]
   ```

1. 

**Cree Dockerfile de aplicación**  
Cree un Dockerfile para su aplicación cliente.

1. 

**Cree el archivo Docker Compose**  
Cree un archivo Docker Compose para ejecutar ambos contenedores con una interfaz de red compartida:
**importante**  
Debe cargar AWS las credenciales y el token de la SSRF para que la aplicación pueda utilizar el agente Secrets Manager. Para Amazon EKS y Amazon ECS, consulte lo siguiente:  
[Administrar el acceso](https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html) en la *Guía del usuario de Amazon EKS*
[Rol de IAM en las tareas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon ECS*

   ```
   version: '3'
   services:
       client-application:
       container_name: client-application
       build:
           context: .
           dockerfile: Dockerfile.client
       command: tail -f /dev/null  # Keep the container running
       
   
       secrets-manager-agent:
       container_name: secrets-manager-agent
       build:
           context: .
           dockerfile: Dockerfile.agent
       network_mode: "container:client-application"  # Attach to the client-application container's network
       depends_on:
           - client-application
   ```

1. 

**Copie el ejecutable del agente**  
Copie el binario `secrets-manager-agent` en el mismo directorio que contiene sus archivos Dockerfiles y Docker Compose.

1. 

**Compile y ejecute contenedores**  
Compile y ejecute los contenedores mediante Docker Compose:

   ```
   docker-compose up --build
   ```

1. 

**Siguientes pasos**  
Ahora es posible utilizar el Agente de Secrets Manager para recuperar los secretos desde un contenedor de clientes. Para obtener más información, consulte [Recuperación de secretos con el Agente de Secrets Manager](#secrets-manager-agent-call).

------
#### [ Lambda ]

Puede [empaquetar el Agente de Secrets Manager como una extensión de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/packaging-layers.html). A continuación, puede [añadirla a la función de Lambda como una capa](https://docs.aws.amazon.com/lambda/latest/dg/adding-layers.html) y llamar al Agente de Secrets Manager desde la función de Lambda para obtener los secretos.

Las siguientes instrucciones muestran cómo obtener un nombre secreto *MyTest*mediante el script `secrets-manager-agent-extension.sh` de ejemplo [https://github.com/aws/aws-secretsmanager-agent](https://github.com/aws/aws-secretsmanager-agent)para instalar el agente Secrets Manager como una extensión de Lambda.

**Crear una extensión de Lambda para el Agente de Secrets Manager**

1. 

**Empaquetar la capa del agente**  
Desde la raíz del paquete de códigos del Agente de Secrets Manager, ejecute los siguientes comandos:

   ```
   AWS_ACCOUNT_ID=AWS_ACCOUNT_ID
   LAMBDA_ARN=LAMBDA_ARN
   
   # Build the release binary 
   cargo build --release --target=x86_64-unknown-linux-gnu
   
   # Copy the release binary into the `bin` folder
   mkdir -p ./bin
   cp ./target/x86_64-unknown-linux-gnu/release/aws_secretsmanager_agent ./bin/secrets-manager-agent
   
   # Copy the `secrets-manager-agent-extension.sh` example script into the `extensions` folder.
   mkdir -p ./extensions
   cp aws_secretsmanager_agent/examples/example-lambda-extension/secrets-manager-agent-extension.sh ./extensions
   
   # Zip the extension shell script and the binary 
   zip secrets-manager-agent-extension.zip bin/* extensions/*
   
   # Publish the layer version
   LAYER_VERSION_ARN=$(aws lambda publish-layer-version \
       --layer-name secrets-manager-agent-extension \
       --zip-file "fileb://secrets-manager-agent-extension.zip" | jq -r '.LayerVersionArn')
   ```

1. 

**Configure el token SSRF**  
La configuración predeterminada del agente establecerá automáticamente el token SSRF en el valor establecido en las variables preestablecidas `AWS_SESSION_TOKEN` o de `AWS_CONTAINER_AUTHORIZATION_TOKEN` entorno (esta última variable para las funciones de Lambda si está habilitada). SnapStart Como alternativa, puede definir la variable de entorno `AWS_TOKEN` con un valor arbitrario para la función de Lambda, ya que esta variable tiene prioridad sobre las otras dos. Si decide utilizar la variable de entorno `AWS_TOKEN`, debe establecer esa variable de entorno con una llamada `lambda:UpdateFunctionConfiguration`.

1. 

**Adjunte la capa a la función.**  
Adjunte la versión de la capa a la función de Lambda:

   ```
   # Attach the layer version to the Lambda function
   aws lambda update-function-configuration \
       --function-name $LAMBDA_ARN \
       --layers "$LAYER_VERSION_ARN"
   ```

1. 

**Actualizar el código de la función**  
Actualice la función de Lambda para realizar consultas a `http://localhost:2773/secretsmanager/get?secretId=MyTest` con el valor del encabezado `X-Aws-codes-Secrets-Token` establecido en el valor del token SSRF procedente de una de las variables de entorno mencionadas anteriormente para recuperar el secreto. Asegúrese de implementar la lógica de reintento en el código de la aplicación para adaptarse a los retrasos en la inicialización y el registro de la extensión de Lambda.

1. 

**Prueba de la función**  
Invoque la función de Lambda para comprobar que el secreto se está recuperando correctamente.

------

## Recuperación de secretos con el Agente de Secrets Manager
<a name="secrets-manager-agent-call"></a>

Para recuperar un secreto, debe llamar al punto de conexión local del Agente de Secrets Manager con el nombre del secreto o ARN como parámetro de consulta. De forma predeterminada, el Agente de Secrets Manager recupera la versión `AWSCURRENT` del secreto. Para recuperar una versión diferente, utilice el parámetro versionStage o versionId.

**importante**  
Para ayudar a proteger al Agente de Secrets Manager, debe incluir un encabezado de token SSRF como parte de cada solicitud: `X-Aws-Parameters-Secrets-Token`. El Agente de Secrets Manager rechaza las solicitudes que no tengan este encabezado o que tengan un token SSRF no válido. Puede personalizar el nombre del encabezado de SSRF en [Configuración del Agente de Secrets Manager](#secrets-manager-agent-config).

### Permisos necesarios
<a name="agent-call-permissions"></a>

El agente Secrets Manager usa el AWS SDK de Rust, que usa la [cadena de proveedores de AWS credenciales](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/credentials.html). La identidad de estas credenciales de IAM determina los permisos que tiene el Agente de Secrets Manager para recuperar los secretos.
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Para obtener más información sobre los permisos, consulte [Referencia de permisos para AWS Secrets Manager](auth-and-access.md#reference_iam-permissions).

**importante**  
Tras introducir el valor secreto en el Agente de Secrets Manager, cualquier usuario con acceso al entorno informático y al token SSRF podrá acceder al secreto desde la memoria caché del Agente de Secrets Manager. Para obtener más información, consulte [Consideraciones de seguridad](#secrets-manager-agent-security).

### Solicitudes de ejemplo
<a name="agent-call-examples"></a>

------
#### [ curl ]

**Example Ejemplo: obtener un secreto con curl**  
El siguiente ejemplo de curl muestra cómo obtener un secreto del Agente de Secrets Manager. El ejemplo se basa en la presencia de la SSRF en un archivo, que es donde se almacena mediante el script de instalación.  

```
curl -v -H \\
    "X-Aws-Parameters-Secrets-Token: $(/var/run/awssmatoken)" \\
    'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID' \\
    echo
```

------
#### [ Python ]

**Example Ejemplo: obtener un secreto con Python**  
El siguiente ejemplo de Python muestra cómo obtener un valor secreto del Agente de Secrets Manager. El ejemplo se basa en la presencia de la SSRF en un archivo, que es donde se almacena mediante el script de instalación.  

```
import requests
import json

# Function that fetches the secret from Secrets Manager Agent for the provided secret id. 
def get_secret():
    # Construct the URL for the GET request
    url = f"http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID"

    # Get the SSRF token from the token file
    with open('/var/run/awssmatoken') as fp:
        token = fp.read() 

    headers = {
        "X-Aws-Parameters-Secrets-Token": token.strip()
    }

    try:
        # Send the GET request with headers
        response = requests.get(url, headers=headers)

        # Check if the request was successful
        if response.status_code == 200:
            # Return the secret value
            return response.text
        else:
            # Handle error cases
            raise Exception(f"Status code {response.status_code} - {response.text}")

    except Exception as e:
        # Handle network errors
        raise Exception(f"Error: {e}")
```

------

## Comprensión del parámetro `refreshNow`
<a name="secrets-manager-agent-refresh"></a>

El Agente de Secrets Manager utiliza una caché en memoria para almacenar valores de secretos, que actualiza periódicamente. Por defecto, esta actualización se produce cuando se solicita un secreto una vez transcurrido el tiempo de vida (TTL), normalmente cada 300 segundos. Sin embargo, este enfoque a veces puede dar como resultado valores de secretos obsoletos, especialmente si un secreto rota antes de que caduque la entrada del caché.

Para abordar esta limitación, el Agente de Secrets Manager admite un parámetro llamado `refreshNow` en la URL. Puedes usar este parámetro para forzar una actualización inmediata del valor de un secreto, omitiendo la caché y asegurándote de disponer de la mayor up-to-date cantidad de información.

**Comportamiento predeterminado (sin `refreshNow`)**  
+ Utiliza valores en caché hasta que caduque el TTL
+ Actualiza los secretos solo después del TTL (por defecto, 300 segundos)
+ Puede devolver valores obsoletos si los secretos rotan antes de que caduque la caché

**Comportamientos de `refreshNow=true`**  
+ Omite la memoria caché por completo
+ Recupera el último valor secreto directamente de Secrets Manager
+ Actualiza la caché con el valor nuevo y restablece el TTL
+ Garantiza que siempre se obtendrá el valor secreto más actualizado

### Actualización forzada de un valor secreto
<a name="refreshnow-examples"></a>

**importante**  
El valor predeterminado de `refreshNow` es `false`. Cuando se establece en `true`, anula el TTL especificado en el archivo de configuración del Agente de Secrets Manager y realiza una llamada de API a Secrets Manager.

------
#### [ curl ]

**Example Ejemplo: forzar la actualización de un secreto mediante curl**  
El siguiente ejemplo de curl muestra cómo forzar el Agente de Secrets Manager para que actualice el secreto. El ejemplo se basa en la presencia de la SSRF en un archivo, que es donde se almacena mediante el script de instalación.  

```
curl -v -H \\
"X-Aws-Parameters-Secrets-Token: $(/var/run/awssmatoken)" \\
'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&refreshNow=true' \\
echo
```

------
#### [ Python ]

**Example Ejemplo: forzar la actualización de un secreto mediante Python**  
El siguiente ejemplo de Python muestra cómo obtener un valor secreto del Agente de Secrets Manager. El ejemplo se basa en la presencia de la SSRF en un archivo, que es donde se almacena mediante el script de instalación.  

```
import requests
import json

# Function that fetches the secret from Secrets Manager Agent for the provided secret id. 
def get_secret():
    # Construct the URL for the GET request
    url = f"http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&refreshNow=true"

    # Get the SSRF token from the token file
    with open('/var/run/awssmatoken') as fp:
        token = fp.read() 

    headers = {
        "X-Aws-Parameters-Secrets-Token": token.strip()
    }

    try:
        # Send the GET request with headers
        response = requests.get(url, headers=headers)

        # Check if the request was successful
        if response.status_code == 200:
            # Return the secret value
            return response.text
        else:
            # Handle error cases
            raise Exception(f"Status code {response.status_code} - {response.text}")

    except Exception as e:
        # Handle network errors
        raise Exception(f"Error: {e}")
```

------

## Configuración del Agente de Secrets Manager
<a name="secrets-manager-agent-config"></a>

Para cambiar la configuración del Agente de Secrets Manager, cree un archivo de configuración [TOML](https://toml.io/en/) y, a continuación, realice una llamada `./aws_secretsmanager_agent --config config.toml`.Opciones de configuración

**`log_level`**  
El nivel de detalle indicado en los registros del Agente de Secrets Manager: DEBUG, INFO, WARN, ERROR o NONE. El valor predeterminado es INFO.

**`log_to_file`**  
Si desea registrar en un archivo o en stdout/stderr: `true` o `false`. El valor predeterminado es `true`.

**`http_port`**  
El puerto del servidor HTTP local, en el rango de 1024 a 65 535. El valor predeterminado es 2773.

**`region`**  
La AWS región que se utilizará para las solicitudes. Si no se especifica ninguna región, el Agente de Secrets Manager determina la región a partir del SDK. Para obtener más información, consulte [Especifique las credenciales y regiones predeterminadas](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/credentials.html) en la *Guía para desarrolladores del SDK de AWS para Rust*.

**`ttl_seconds`**  
El TTL en segundos de los elementos almacenados en caché, en el rango de 0 a 3600. El valor predeterminado es 300, donde 0 indica que no hay almacenamiento en caché.

**`cache_size`**  
El número máximo de secretos que se pueden almacenar en caché está en el rango de 1 a 1000. El valor predeterminado es 1000.

**`ssrf_headers`**  
Una lista de nombres de encabezados que el Agente de Secrets Manager comprueba en busca del token SSRF. El valor predeterminado es «X-Aws-Parameters-Secrets-Token,». X-Vault-Token

**`ssrf_env_variables`**  
Una lista de nombres de variables de entorno que el Agente de Secrets Manager comprueba en orden secuencial en busca del token SSRF. La variable de entorno puede contener el token o una referencia al archivo del token, como en: `AWS_TOKEN=file:///var/run/awssmatoken`. El valor predeterminado es ", \$1TOKEN, \$1AUTHORIZATION\$1TOKEN». AWS\$1TOKEN AWS\$1SESSION AWS\$1CONTAINER

**`path_prefix`**  
El prefijo URI que se utiliza para determinar si la solicitud es una solicitud basada en una ruta. El valor predeterminado es “/v1/”.

**`max_conn`**  
El número máximo de conexiones desde clientes HTTP que permite el Agente de Secrets Manager, entre 1 y 1000. El valor predeterminado es 800.

## Características opcionales
<a name="secrets-manager-agent-features"></a>

El Agente de Secrets Manager se puede crear con características opcionales pasando el marcador `--features` a `cargo build`. Las características disponibles son las siguientes:Características de compilación

**`prefer-post-quantum`**  
Crea `X25519MLKEM768` como el algoritmo de intercambio de claves de mayor prioridad. De lo contrario, está disponible pero no tiene la prioridad más alta. `X25519MLKEM768`es un algoritmo híbrido de intercambio de post-quantum-secure claves.

**`fips`**  
Restringe los conjuntos de cifrado utilizados por el agente únicamente a los cifrados aprobados por el FIPS.

## Registro
<a name="secrets-manager-agent-log"></a>

**Registro local**  
El Agente de Secrets Manager registra los errores localmente en el archivo `logs/secrets_manager_agent.log` o en stdout/stderr según la variable de configuración `log_to_file`. Cuando la aplicación llama al Agente de Secrets Manager para obtener un secreto, esas llamadas aparecen en el registro local. No aparecen en los CloudTrail registros.

**Rotación de registros**  
El Agente de Secrets Manager crea un nuevo archivo de registro cuando el archivo alcanza los 10 MB y almacena hasta cinco archivos de registro en total.

**AWS registro de servicios**  
El registro no va a Secrets Manager, CloudTrail, o CloudWatch. Las solicitudes para obtener secretos del Agente de Secrets Manager no aparecen en esos registros. Cuando el agente de Secrets Manager llama a Secrets Manager para obtener un secreto, esa llamada se graba CloudTrail con una cadena de agente de usuario que contiene`aws-secrets-manager-agent`.

Puede configurar las opciones del registro en [Configuración del Agente de Secrets Manager](#secrets-manager-agent-config).

## Consideraciones de seguridad
<a name="secrets-manager-agent-security"></a>

**Dominio de confianza**  
En el caso de una arquitectura de agente, el dominio de confianza es el lugar donde se puede acceder al punto de conexión del agente y al token SSRF, que suele ser todo el host. El dominio de confianza del Agente de Secrets Manager debe coincidir con el dominio en el que están disponibles las credenciales de Secrets Manager para mantener la misma postura de seguridad. Por ejemplo, en Amazon EC2, el dominio de confianza del Agente de Secrets Manager sería el mismo que el dominio de las credenciales cuando se utilizan roles para Amazon EC2.

**importante**  
Las aplicaciones preocupadas por la seguridad que aún no utilizan una solución de agente con las credenciales de Secrets Manager bloqueadas en la aplicación deberían considerar la posibilidad de utilizar soluciones de almacenamiento en caché AWS SDKs o específicas del idioma. Para obtener más información, consulte [Obtener secretos](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html).