Come posso gestire i segreti e le chiavi di accesso per attività e servizi in Amazon ECS?
Ho configurato Amazon Elastic Container Service (Amazon ECS) per accedere a informazioni sensibili, come le credenziali del database o le chiavi API. Desidero gestire e recuperare in modo sicuro i segreti che non sono codificati.
Risoluzione
Per gestire i segreti e le chiavi di accesso non codificate, utilizza AWS Secrets Manager o Archivio dei parametri, una funzionalità di AWS Systems Manager.
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Crea un segreto
Per creare un segreto, utilizza la console Secrets Manager o AWS CLI. Per utilizzare Archivio dei parametri per memorizzare il segreto, esegui questo comando put-parameter:
aws ssm put-parameter --type SecureString --name awsExampleParameter --value awsExampleValue
Nota: sostituisci awsExampleParameter con il tuo parametro e awsExampleValue con il tuo segreto.
Consenti alle attività Amazon ECS di accedere ai segreti
Amazon ECS utilizza un ruolo di esecuzione dell'attività AWS Identity and Access Management (AWS IAM) per ottenere informazioni sui segreti da Secrets Manager o Archivio dei parametri. Crea una policy IAM per il ruolo che ha le autorizzazioni minime richieste. Se utilizzi Secrets Manager, il ruolo IAM deve avere le autorizzazioni secretsmanager:GetSecretValue. Se utilizzi Archivio dei parametri, il ruolo IAM deve avere le autorizzazioni ssm:GetParameters e kms:Decrypt.
Esempio di policy di Secrets Manager:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } ] }
Nota: sostituisci arn:aws:secretsmanager:region:account-id:secret:secret-name con l'ARN del tuo segreto.
Esempio di policy di Archivio dei parametri:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:region:account-id:parameter/parameter-name" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/kms-key-id" } ] }
Nota: sostituisci arn:aws:ssm:region:account-id:parameter/parameter-name con l'ARN del tuo parametro e arn:aws:kms:region:account-id:key/kms-key-id con la tua chiave del Servizio AWS di gestione delle chiavi (AWS KMS).
Collega la policy IAM al ruolo di esecuzione dell'attività Amazon ECS.
Accedi ai segreti delle attività Amazon ECS
Puoi passare dati sensibili (ad esempio, chiavi o credenziali API) come parametri o variabili di ambiente. Prima di tutto, modifica la definizione dell'attività Amazon ECS per includere le variabili di ambiente o le mappature dei segreti.
Esempio di mappatura dei segreti in una definizione dell'attività:
{ "name": "MY_SECRET", "valueFrom": "arn:aws:secretsmanager:region:account-id:secret:secret-name" }
Quindi passa le variabili di ambiente al container Amazon ECS.
Esempio di containerDefinitions nella definizione dell'attività:
- name: my-container environment: - name: Example_PASSWORD valueFrom: arn:aws:ssm:us-west-2:123456789012:parameter/my-app/example-password
Gestisci i segreti con CI/CD
Utilizza le variabili di ambiente per passare dinamicamente i segreti durante le distribuzioni di integrazione e distribuzione continua (CI/CD). Ottieni i segreti da Secrets Manager o Archivio dei parametri negli script di distribuzione. Non codificare i segreti nelle definizioni dell'attività. Utilizza invece parametri o segnaposto. Per ulteriori informazioni e best practice, consulta Strengthen the DevOps pipeline and protect data with AWS Secrets Manager, AWS KMS, and AWS Certificate Manager (Come rafforzare la pipeline DevOps e proteggere i dati con AWS Secrets Manager, AWS KMS e Gestione certificati AWS).
Ad esempio, se utilizzi AWS CodePipeline, configura una fase di creazione che utilizza AWS CLI per ottenere i segreti:
bashCopy codeaws secretsmanager get-secret-value --secret-id secret-name --query 'SecretString' --output text
Nota: sostituisci secret-name con il tuo segreto.
Risolvi i problemi relativi alla gestione dei segreti
Se riscontri problemi durante l'utilizzo dei segreti in Amazon ECS, intraprendi le seguenti azioni:
-
Assicurati che il ruolo IAM dell'attività Amazon ECS abbia le autorizzazioni secretsmanager:GetSecretValue o ssm:GetParameter corrette.
-
Se ricevi errori Denied, assicurati che la policy IAM sia associata al ruolo di esecuzione dell'attività Amazon ECS corretto. Inoltre, assicurati che l'ARN del segreto della policy IAM sia esatto.
-
Se Amazon ECS non riesce a ottenere il segreto, verifica di utilizzare la Regione AWS e il segreto corretti. Per verificare il segreto, esegui questo comando get-secret-value all'esterno di Amazon ECS:
aws secretsmanager get-secret-value --secret-id secret-name --region region-codeNota: sostituisci secret-name con il tuo segreto e region-code con la tua Regione.
- Argomenti
- Containers
- Lingua
- Italiano
