View a markdown version of this page

Utilizzo di Gestione dei segreti AWS Agente - Gestione dei segreti AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Gestione dei segreti AWS Agente

Come funziona l'agente Secrets Manager

L' Gestione dei segreti AWS Agent è un servizio HTTP lato client che ti aiuta a standardizzare il modo in cui utilizzi i segreti di Secrets Manager nei tuoi ambienti di elaborazione. È possibile utilizzarlo con i seguenti servizi:

  • AWS Lambda

  • Amazon Elastic Container Service

  • Amazon Elastic Kubernetes Service

  • Amazon Elastic Compute Cloud

L'agente Secrets Manager recupera e memorizza nella cache i segreti in memoria, consentendo alle applicazioni di ottenere segreti da localhost invece di effettuare chiamate dirette a Secrets Manager. L'agente Secrets Manager può solo leggere i segreti, non può modificarli.

L'agente Secrets Manager è open source. Il codice sorgente, le istruzioni di installazione e le informazioni sulla versione più recente sono disponibili su GitHub.

Importante

L'agente Secrets Manager utilizza AWS le credenziali dell'ambiente per chiamare Secrets Manager. Include la protezione contro Server Side Request Forgery (SSRF) per contribuire a migliorare la sicurezza segreta. Per impostazione predefinita, l'agente Secrets Manager utilizza lo scambio di ML-KEM chiavi post-quantum come scambio di chiavi con la massima priorità.

Informazioni sulla memorizzazione nella cache dell'agente Secrets Manager

L'agente Secrets Manager utilizza una cache in memoria che si ripristina al riavvio dell'agente Secrets Manager. Aggiorna periodicamente i valori segreti memorizzati nella cache in base a quanto segue:

  • La frequenza di aggiornamento predefinita (TTL) è 300 secondi

  • È possibile modificare il TTL utilizzando un file di configurazione

  • L'aggiornamento avviene quando si richiede un segreto dopo la scadenza del TTL

Nota

L'agente Secrets Manager non include l'invalidazione della cache. Se un segreto ruota prima della scadenza della voce della cache, l'agente Secrets Manager potrebbe restituire un valore segreto non aggiornato.

L'agente Secrets Manager restituisce valori segreti nello stesso formato della risposta diGetSecretValue. I valori segreti non sono crittografati nella cache.

Crea l'agente Secrets Manager

Prima di iniziare, assicurati di avere gli strumenti di sviluppo standard e gli strumenti Rust installati per la tua piattaforma.

Nota

La creazione dell'agente con la fips funzionalità abilitata su macOS richiede attualmente la seguente soluzione alternativa:

  • Crea una variabile di ambiente chiamata SDKROOT che è impostata sul risultato dell'esecuzione xcrun --show-sdk-path

RPM-based systems
Per costruire sui RPM-based sistemi
  1. Usa lo install script fornito nel repository.

    Lo script genera un token SSRF casuale all'avvio e lo memorizza nel file. /var/run/awssmatoken Il token è leggibile dal awssmatokenreader gruppo creato dallo script di installazione.

  2. Per consentire all'applicazione di leggere il file del token, è necessario aggiungere al awssmatokenreader gruppo l'account utente con cui viene eseguita l'applicazione. Ad esempio, potete concedere all'applicazione le autorizzazioni per leggere il file del token con il seguente comando usermod, dove si <APP_USER> trova l'ID utente con cui viene eseguita l'applicazione.

    sudo usermod -aG awssmatokenreader <APP_USER>
    Installa gli strumenti di sviluppo

    Su RPM-based sistemi come AL2023, installa il gruppo Development Tools:

    sudo yum -y groupinstall "Development Tools"
  3. Installa Rust

    Segui le istruzioni su Install Rust nella documentazione di Rust:

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

    Crea l'agente Secrets Manager usando il comando cargo build:

    cargo build --release

    Troverai l'eseguibile sottotarget/release/aws_secretsmanager_agent.

Debian-based systems
Per costruire sui Debian-based sistemi
  1. Installa strumenti di sviluppo

    Su Debian-based sistemi come Ubuntu, installa il pacchetto build-essential:

    sudo apt install build-essential
  2. Installa Rust

    Segui le istruzioni su Install Rust nella documentazione di Rust:

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

    Crea l'agente Secrets Manager usando il comando cargo build:

    cargo build --release

    Troverai l'eseguibile sottotarget/release/aws_secretsmanager_agent.

Windows
Per creare su Windows
  1. Configurare l'ambiente di sviluppo

    Segui le istruzioni in Configurare l'ambiente di sviluppo su Windows for Rust nella documentazione di Microsoft Windows.

  2. Crea l'agente

    Crea l'agente Secrets Manager usando il comando cargo build:

    cargo build --release

    Troverai l'eseguibile sottotarget/release/aws_secretsmanager_agent.exe.

Cross-compile natively
Per eseguire la compilazione incrociata in modo nativo
  1. Installa strumenti di compilazione incrociata

    Nelle distribuzioni in cui è disponibile il pacchetto mingw-w64 come Ubuntu, installa la toolchain cross-compile:

    # Install the cross compile tool chain sudo add-apt-repository universe sudo apt install -y mingw-w64
  2. Aggiungi obiettivi di compilazione di Rust

    Installa il target di build di Windows GNU:

    rustup target add x86_64-pc-windows-gnu
  3. Compila per Windows

    Cross-compile l'agente per Windows:

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

    L'eseguibile è disponibile all'indirizzotarget/x86_64-pc-windows-gnu/release/aws_secretsmanager_agent.exe.

Cross compile with Rust cross
Per eseguire la compilazione incrociata utilizzando Rust cross

Se gli strumenti di compilazione incrociata non sono disponibili in modo nativo sul sistema, puoi utilizzare il progetto Rust cross. Per ulteriori informazioni, vedere cross on. GitHub

Importante

Consigliamo 32 GB di spazio su disco per l'ambiente di compilazione.

  1. Configura Docker

    Installa e configura Docker:

    # Install and start docker sudo yum -y install docker sudo systemctl start docker sudo systemctl enable docker # Make docker start after reboot
  2. Configura le autorizzazioni Docker

    Aggiungi il tuo utente al gruppo docker:

    # Give ourselves permission to run the docker images without sudo sudo usermod -aG docker $USER newgrp docker
  3. Crea per Windows

    Installa cross e crea l'eseguibile:

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

Installare l'agente Secrets Manager

Scegli il tuo ambiente di elaborazione tra le seguenti opzioni di installazione.

Amazon EC2
Per installare l'agente Secrets Manager su Amazon EC2
  1. Passa alla directory di configurazione

    Passa alla directory di configurazione:

    cd aws_secretsmanager_agent/configuration
  2. Esegui lo script di installazione

    Esegui lo install script fornito nel repository.

    Lo script genera un token SSRF casuale all'avvio e lo memorizza nel file. /var/run/awssmatoken Il token è leggibile dal awssmatokenreader gruppo creato dallo script di installazione.

  3. Configura le autorizzazioni dell'applicazione

    Aggiungi l'account utente con cui viene eseguita l'applicazione al awssmatokenreader gruppo:

    sudo usermod -aG awssmatokenreader APP_USER

    Sostituiscilo APP_USER con l'ID utente con cui viene eseguita l'applicazione.

Container Sidecar

Puoi eseguire Secrets Manager Agent come contenitore secondario insieme all'applicazione utilizzando Docker. Quindi l'applicazione può recuperare i segreti dal server HTTP locale fornito dall'agente Secrets Manager. Per informazioni su Docker, consulta la documentazione Docker.

Per creare un contenitore sidecar per l'agente Secrets Manager
  1. Crea l'agente Dockerfile

    Crea un Dockerfile per il contenitore sidecar di Secrets Manager Agent:

    # 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"]
  2. Crea l'applicazione Dockerfile

    Crea un Dockerfile per la tua applicazione client.

  3. Crea il file Docker Compose

    Crea un file Docker Compose per eseguire entrambi i contenitori con un'interfaccia di rete condivisa:

    Importante

    È necessario caricare AWS le credenziali e il token SSRF affinché l'applicazione possa utilizzare l'agente Secrets Manager. Per Amazon EKS e Amazon ECS, consulta quanto segue:

    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
  4. File binario dell'agente di copia

    Copia il file secrets-manager-agent binario nella stessa directory che contiene i file Dockerfiles e Docker Compose.

  5. Crea ed esegui contenitori

    Crea ed esegui i contenitori utilizzando Docker Compose:

    docker-compose up --build
  6. Fasi successive

    Ora puoi utilizzare l'agente Secrets Manager per recuperare segreti dal contenitore del tuo client. Per ulteriori informazioni, consulta Recupera segreti con l'agente Secrets Manager.

Lambda

È possibile impacchettare l'agente Secrets Manager come estensione Lambda. Quindi puoi aggiungerlo alla tua funzione Lambda come livello e chiamare l'agente Secrets Manager dalla tua funzione Lambda per ottenere segreti.

Le seguenti istruzioni mostrano come ottenere un nome segreto MyTestutilizzando lo script di esempio secrets-manager-agent-extension.sh nel repository aws-secretsmanager-agent GitHub per installare l'agente Secrets Manager come estensione Lambda.

Per creare un'estensione Lambda per l'agente Secrets Manager
  1. Package dello strato agente

    Dalla radice del pacchetto di codice Secrets Manager Agent, esegui i seguenti comandi:

    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')
  2. Configurare il token SSRF

    La configurazione predefinita dell'agente imposterà automaticamente il token SSRF sul valore impostato nelle variabili preimpostate AWS_SESSION_TOKEN o di AWS_CONTAINER_AUTHORIZATION_TOKEN ambiente (quest'ultima variabile per le funzioni Lambda con abilitata). SnapStart In alternativa, puoi definire la variabile di AWS_TOKEN ambiente con un valore arbitrario per la tua funzione Lambda, poiché questa variabile ha la precedenza sulle altre due. Se scegli di utilizzare la variabile di AWS_TOKEN ambiente, devi impostarla con una chiamata. lambda:UpdateFunctionConfiguration

  3. Collega il livello alla funzione

    Collega la versione del layer alla tua funzione Lambda:

    # Attach the layer version to the Lambda function aws lambda update-function-configuration \ --function-name $LAMBDA_ARN \ --layers "$LAYER_VERSION_ARN"
  4. Aggiornamento del codice della funzione

    Aggiorna la tua funzione Lambda per eseguire una query http://localhost:2773/secretsmanager/get?secretId=MyTest con il valore dell'X-Aws-codes-Secrets-Tokenintestazione impostato sul valore del token SSRF proveniente da una delle variabili di ambiente sopra menzionate per recuperare il segreto. Assicurati di implementare la logica dei tentativi nel codice dell'applicazione per evitare ritardi nell'inizializzazione e nella registrazione dell'estensione Lambda.

  5. Test della funzione

    Invocate la funzione Lambda per verificare che il segreto venga recuperato correttamente.

Recupera segreti con l'agente Secrets Manager

Per recuperare un segreto, chiamate l'endpoint locale dell'agente Secrets Manager con il nome segreto o l'ARN come parametro di interrogazione. Per impostazione predefinita, l'agente Secrets Manager recupera la AWSCURRENT versione del segreto. Per recuperare una versione diversa, utilizzare il parametro VersionStage o VersionID.

Importante

Per proteggere l'agente Secrets Manager, è necessario includere un'intestazione del token SSRF come parte di ogni richiesta:. X-Aws-Parameters-Secrets-Token L'agente Secrets Manager nega le richieste che non hanno questa intestazione o che hanno un token SSRF non valido. È possibile personalizzare il nome dell'intestazione SSRF in. Configurazione dell'agente Secrets Manager

Autorizzazioni richieste

L'agente Secrets Manager utilizza l' AWS SDK per Rust, che utilizza la catena di fornitori di AWS credenziali. L'identità di queste credenziali IAM determina le autorizzazioni di cui dispone l'agente Secrets Manager per recuperare i segreti.

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

Per ulteriori informazioni sulle autorizzazioni, consultare Riferimento alle autorizzazioni per Gestione dei segreti AWS.

Importante

Dopo aver inserito il valore segreto nell'agente Secrets Manager, qualsiasi utente con accesso all'ambiente di calcolo e al token SSRF può accedere al segreto dalla cache di Secrets Manager Agent. Per ulteriori informazioni, consulta Considerazioni relative alla sicurezza.

Richieste di esempio

curl
Esempio Esempio: ottieni un segreto usando curl

Il seguente esempio curl mostra come ottenere un segreto dall'agente Secrets Manager. L'esempio si basa sulla presenza dell'SSRF in un file, che è dove viene memorizzato dallo script di installazione.

curl -v -H \ "X-Aws-Parameters-Secrets-Token: $(</var/run/awssmatoken)" \ 'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID'
Python
Esempio Esempio: ottieni un segreto usando Python

Il seguente esempio in Python mostra come ottenere un segreto dall'agente Secrets Manager. L'esempio si basa sulla presenza dell'SSRF in un file, che è dove viene memorizzato dallo script di installazione.

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}")

Informazioni sul parametro RefreshNow

L'agente Secrets Manager utilizza una cache in memoria per archiviare i valori segreti, che aggiorna periodicamente. Per impostazione predefinita, questo aggiornamento si verifica quando si richiede un segreto dopo la scadenza del Time to Live (TTL), in genere ogni 300 secondi. Tuttavia, questo approccio a volte può portare a valori segreti obsoleti, specialmente se un segreto ruota prima della scadenza della voce della cache.

Per ovviare a questa limitazione, l'agente Secrets Manager supporta un parametro chiamato refreshNow nell'URL. È possibile utilizzare questo parametro per forzare l'aggiornamento immediato del valore di un segreto, aggirando la cache e assicurandosi di disporre delle informazioni più aggiornate.

Comportamento predefinito (senza) refreshNow
  • Utilizza i valori memorizzati nella cache fino alla scadenza del TTL

  • Aggiorna i segreti solo dopo TTL (impostazione predefinita: 300 secondi)

  • Può restituire valori obsoleti se i segreti ruotano prima della scadenza della cache

Comportamento con refreshNow=true
  • Ignora completamente la cache

  • Recupera l'ultimo valore segreto direttamente da Secrets Manager

  • Aggiorna la cache con il nuovo valore e reimposta il TTL

  • Ti assicura di ottenere sempre il valore segreto più recente

Force-refresh un valore segreto

Importante

Il valore predefinito di refreshNow è false. Se impostato sutrue, sovrascrive il TTL specificato nel file di configurazione di Secrets Manager Agent ed effettua una chiamata API a Secrets Manager.

curl
Esempio Esempio: Force-refresh un segreto che utilizza curl

Il seguente esempio curl mostra come forzare l'agente Secrets Manager ad aggiornare il segreto. L'esempio si basa sulla presenza dell'SSRF in un file, che è dove viene memorizzato dallo script di installazione.

curl -v -H \ "X-Aws-Parameters-Secrets-Token: $(</var/run/awssmatoken)" \ 'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&refreshNow=true'
Python
Esempio Esempio: Force-refresh un segreto che usa Python

Il seguente esempio in Python mostra come ottenere un segreto dall'agente Secrets Manager. L'esempio si basa sulla presenza dell'SSRF in un file, che è dove viene memorizzato dallo script di installazione.

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}")

Recupera i segreti tra gli account con il concatenamento dei ruoli

Il concatenamento dei ruoli consente all'agente Secrets Manager di recuperare segreti da altri AWS account assumendo ruoli IAM utilizzando. AWS STS AssumeRole L'agente Secrets Manager crea e memorizza nella cache un client di caching separato per ogni ARN di ruolo univoco. Ogni client di ruolo mantiene la propria cache indipendente, quindi lo stesso segreto recuperato con ruoli diversi ha voci di cache separate.

Autorizzazioni richieste

Per utilizzare il concatenamento dei ruoli, è necessario quanto segue:

  • Le credenziali di ambiente dell'agente Secrets Manager devono disporre dell'sts:AssumeRoleautorizzazione per l'ARN del ruolo di destinazione.

  • Il ruolo di destinazione deve disporre delle autorizzazioni secretsmanager:GetSecretValue e secretsmanager:DescribeSecret delle autorizzazioni per i segreti a cui desideri accedere.

  • La politica di fiducia del ruolo di destinazione deve consentire all'identità dell'agente Secrets Manager di assumerla.

Recupera i segreti tra account

Includi il parametro di roleArn query nella richiesta all'agente Secrets Manager per specificare il ruolo da assumere per il recupero dei segreti.

curl
Esempio Esempio: Cross-account secret usando curl
curl -v -H \ "X-Aws-Parameters-Secrets-Token: $(</var/run/awssmatoken)" \ 'http://localhost:2773/secretsmanager/get?secretId=YOUR_SECRET_ID&roleArn=arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME'
Python
Esempio Esempio: Cross-account segreto con Python
import requests def get_secret_cross_account(): secret_id = "YOUR_SECRET_ID" role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" url = f"http://localhost:2773/secretsmanager/get?secretId={secret_id}&roleArn={role_arn}" with open('/var/run/awssmatoken') as fp: token = fp.read() headers = { "X-Aws-Parameters-Secrets-Token": token.strip() } try: response = requests.get(url, headers=headers) if response.status_code == 200: return response.text else: raise Exception(f"Status code {response.status_code} - {response.text}") except Exception as e: raise Exception(f"Error: {e}")

Configurazione e limiti del concatenamento dei ruoli

Configura il concatenamento dei ruoli con l'max_rolesopzione nel tuo file di configurazione TOML. Questo imposta il numero massimo di ruoli assunti simultaneamente, nell'intervallo da 1 a 20. Il valore di default è 20.

Importante

I ruoli presunti non vengono rimossi dalla cache dei ruoli dell'agente Secrets Manager. Una volta raggiunto il numero massimo di ruoli, le richieste con nuovi ARN di ruolo vengono rifiutate con un 400 errore fino al riavvio dell'agente Secrets Manager.

Risposte di errore per il concatenamento dei ruoli
400

Il roleArn formato non è valido o è stato raggiunto il numero massimo di ruoli assunti.

403

La chiamata AWS STS AssumeRole non è riuscita. Verifica che la politica di attendibilità del ruolo di destinazione consenta all'identità dell'agente Secrets Manager di assumerla.

Pre-fetch segreti all'avvio

Per impostazione predefinita, l'agente Secrets Manager recupera i segreti su richiesta quando l'applicazione li richiede. Con il prefetching, l'agente Secrets Manager carica i segreti specifici nella cache all'avvio, in modo che l'applicazione possa accedervi immediatamente senza attendere la prima chiamata API. Pre-fetching viene eseguito come attività in background: l'agente Secrets Manager inizia ad accettare le richieste immediatamente e non blocca il completamento del pre-fetch.

È possibile specificare i segreti da recuperare in anticipo in due modi:

  • Segreti espliciti: elenca ID o ARN segreti specifici.

  • Tag-based scoperta: scopri i segreti tramite tag key. L'agente Secrets Manager recupera tutti i segreti che hanno il tag specificato.

Autorizzazioni richieste

Oltre alle autorizzazioni standard per il recupero dei segreti, il prefetching richiede quanto segue:

  • secretsmanager:BatchGetSecretValue— Richiesto per tutte le operazioni di pre-fetch.

  • secretsmanager:ListSecrets— Richiesto solo quando si utilizza il rilevamento basato su tag.

Configurazione del pre-fetching

Aggiungi una [prefetch] sezione al tuo file di configurazione TOML. Sono disponibili le seguenti opzioni:

cache_buffer_ratio

La frazione massima di cache da riempire per client durante il pre-fetch, compresa tra 0,1 e 1,0. L'impostazione predefinita è 0,8. Quando viene raggiunto il limite del buffer, l'agente Secrets Manager interrompe il prerecupero dei segreti rimanenti e non rimuove le voci della cache esistenti. I segreti non caricati durante il prefetch sono ancora disponibili su richiesta.

max_jitter_seconds

Un ritardo casuale in secondi prima dell'inizio del prefetching, compreso tra 0 e 10. Il valore predefinito è 0. Utilizzatelo per impedire chiamate API sincronizzate a livello di parco quando più agenti vengono avviati contemporaneamente.

Esempio Pre-fetch configurazione con segreti espliciti
[prefetch] cache_buffer_ratio = 0.6 max_jitter_seconds = 5 secrets = [ { secret_id = "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-AbCdEf" }, { secret_id = "MyOtherSecret" }, ]
Esempio Pre-fetch configurazione con rilevamento basato su tag
[prefetch] cache_buffer_ratio = 0.8 filter_tags = [ { key = "Environment" }, { key = "Team" }, ]

Puoi anche combinare segreti espliciti e rilevamento basato su tag nella stessa configurazione. Per il recupero preliminare tra più account, aggiungi il campo. role_arn Per ulteriori informazioni, consulta Recupera i segreti tra gli account con il concatenamento dei ruoli.

Esempio Pre-fetch configurazione con accesso su più account
[prefetch] cache_buffer_ratio = 0.6 max_jitter_seconds = 5 secrets = [ { secret_id = "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-AbCdEf" }, { secret_id = "cross-account-secret", role_arn = "arn:aws:iam::987654321098:role/SecretAccessRole" }, ] filter_tags = [ { key = "Environment" }, { key = "Team", role_arn = "arn:aws:iam::987654321098:role/SecretAccessRole" }, ]

Configurazione dell'agente Secrets Manager

Per modificare la configurazione dell'agente Secrets Manager, crea un file di configurazione TOML, quindi chiama. ./aws_secretsmanager_agent --config config.toml

Opzioni di configurazione
log_level

Il livello di dettaglio riportato nei log per l'agente Secrets Manager: DEBUG, INFO, WARN, ERROR o NONE. L'impostazione predefinita è INFO.

log_to_file

Se accedere a un file o stdout/stderr: true ofalse. Il valore predefinito è true.

http_port

La porta per il server HTTP locale, nell'intervallo da 1024 a 65535. L'impostazione predefinita è 2773.

region

La AWS regione da utilizzare per le richieste. Se non viene specificata alcuna regione, l'agente Secrets Manager determina la regione dall'SDK. Per ulteriori informazioni, consulta Specificare le credenziali e la regione predefinita nella Guida per sviluppatori AWS SDK for Rust.

ttl_seconds

Il TTL in secondi per gli elementi memorizzati nella cache, compreso tra 0 e 3600. L'impostazione predefinita è 300. 0 indica che non è presente alcuna memorizzazione nella cache.

cache_size

Il numero massimo di segreti che possono essere archiviati nella cache, compreso tra 1 e 1000. Il valore predefinito è 1000.

ssrf_headers

Un elenco di nomi di intestazione che l'agente Secrets Manager controlla per il token SSRF. L'impostazione predefinita è "X-Aws-Parameters-Secrets-Token,». X-Vault-Token

ssrf_env_variables

Un elenco di nomi di variabili di ambiente che l'agente Secrets Manager controlla in ordine sequenziale per il token SSRF. La variabile di ambiente può contenere il token o un riferimento al file del token come in:. AWS_TOKEN=file:///var/run/awssmatoken L'impostazione predefinita è "AWS_TOKEN, AWS_SESSION_TOKEN, AWS_CONTAINER_AUTHORIZATION_TOKEN».

path_prefix

Il prefisso URI utilizzato per determinare se la richiesta è una richiesta basata sul percorso. L'impostazione predefinita è «/v1/».

max_conn

Il numero massimo di connessioni dai client HTTP consentito dall'agente Secrets Manager, compreso tra 1 e 1000. Il valore predefinito è 800.

max_roles

Il numero massimo di ruoli IAM simultanei per l'accesso su più account, compreso tra 1 e 20. Il valore di default è 20. Per ulteriori informazioni, consulta Recupera i segreti tra gli account con il concatenamento dei ruoli.

Funzionalità opzionali

L'agente Secrets Manager può essere creato con funzionalità opzionali passando il --features flag acargo build. Le funzionalità disponibili sono:

Caratteristiche di compilazione
prefer-post-quantum

Crea X25519MLKEM768 l'algoritmo di scambio di chiavi con la massima priorità. Altrimenti, è disponibile ma non ha la massima priorità. X25519MLKEM768è un algoritmo di scambio di chiavi ibrido e post-quantistico sicuro.

fips

Limita le suite di crittografia utilizzate dall'agente ai soli codici. FIPS-approved

Registrazione dei log

Registrazione locale

L'agente Secrets Manager registra gli errori localmente nel file logs/secrets_manager_agent.log o in stdout/stderr base alla variabile di log_to_file configurazione. Quando l'applicazione chiama l'agente Secrets Manager per ottenere un segreto, tali chiamate vengono visualizzate nel registro locale. Non compaiono nei CloudTrail log.

Rotazione del registro

L'agente Secrets Manager crea un nuovo file di registro quando il file raggiunge i 10 MB e memorizza fino a cinque file di registro in totale.

AWS registrazione del servizio

Il registro non viene inviato a Secrets Manager CloudTrail, o CloudWatch. Le richieste di ottenere segreti dall'agente Secrets Manager non vengono visualizzate in questi registri. Quando l'agente Secrets Manager effettua una chiamata a Secrets Manager per ottenere un segreto, tale chiamata viene registrata CloudTrail con una stringa agente utente contenenteaws-secrets-manager-agent.

È possibile configurare le opzioni di registrazione in. Configurazione dell'agente Secrets Manager

Considerazioni relative alla sicurezza

Dominio di fiducia

Per un'architettura ad agenti, il dominio di fiducia è il luogo in cui sono accessibili l'endpoint dell'agente e il token SSRF, che di solito è l'intero host. Il dominio di fiducia per l'agente Secrets Manager deve corrispondere al dominio in cui sono disponibili le credenziali di Secrets Manager per mantenere lo stesso livello di sicurezza. Ad esempio, su Amazon EC2 il dominio di fiducia per l'agente Secrets Manager sarebbe lo stesso del dominio delle credenziali quando si utilizzano i ruoli per Amazon EC2.

Importante

Le applicazioni attente alla sicurezza che non utilizzano già una soluzione agente con le credenziali di Secrets Manager bloccate sull'applicazione dovrebbero prendere in considerazione l'utilizzo degli AWS SDK o delle soluzioni di caching specifici del linguaggio. Per ulteriori informazioni, consulta Get secrets.