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à.
Specificare i valori memorizzati in altri servizi con riferimenti dinamici
I riferimenti dinamici offrono un modo pratico per specificare i valori esterni archiviati e gestiti in altri servizi e disaccoppiare le informazioni sensibili dai modelli. infrastructure-as-code CloudFormation recupera il valore del riferimento specificato quando necessario durante le operazioni di stack e change set.
È possibile specificare i seguenti tipi di riferimenti dinamici:
-
Valori in chiaro memorizzati in AWS Systems Manager Parameter Store.
-
Stringhe sicure memorizzate in AWS Systems Manager Parameter Store.
-
Interi segreti o valori segreti memorizzati in AWS Secrets Manager.
Argomenti
Considerazioni relative all'utilizzo di riferimenti dinamici
Di seguito sono riportate le considerazioni relative all'utilizzo di riferimenti dinamici:
Importante
Consigliamo vivamente di non includere riferimenti dinamici, o dati sensibili, nelle proprietà delle risorse che fanno parte dell'identificatore principale di una risorsa.
Quando un parametro di riferimento dinamico è incluso in una proprietà che costituisce un identificatore di risorsa principale, è CloudFormation possibile utilizzare il valore effettivo in chiaro nell'identificatore della risorsa principale. Questo ID risorsa può apparire in qualsiasi output o destinazione derivata.
Per determinare quali proprietà della risorsa comprendono l'identificatore principale di un tipo di risorsa, consultate la documentazione di riferimento della risorsa in. AWS riferimento ai tipi di risorse e proprietà Nella sezione Return values (Valori restituiti), il valore restituito della funzione Ref
rappresenta le proprietà delle risorse che comprendono l'identificatore principale del tipo di risorsa.
-
È possibile includere fino a 60 riferimenti dinamici in un modello di stack.
-
Per le trasformazioni, come
AWS::Include
andAWS::Serverless
, CloudFormation non risolve i riferimenti dinamici prima di richiamare qualsiasi trasformazione. Piuttosto, CloudFormation passa la stringa letterale del riferimento dinamico alla trasformazione. I riferimenti dinamici (inclusi quelli inseriti nel modello elaborato come risultato di una trasformazione) vengono risolti quando si esegue il set di modifiche utilizzando il modello. -
I riferimenti dinamici per valori sicuri, come
ssm-secure
esecretsmanager
, non sono attualmente supportati nelle risorse personalizzate.
Nota
Non create un riferimento dinamico che abbia una barra rovesciata (\) come valore finale. AWS CloudFormation non è in grado di risolvere tali riferimenti, il che comporta un errore di risorse.
Specifica di riferimenti dinamici in modelli di stack
I riferimenti dinamici sono conformi al seguente schema:
'{{resolve:
o service-name
:reference-key
}}''{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}'
.
- service-name
-
Specifica il servizio in cui il valore viene archiviato e gestito.
Obbligatorio.
Al momento, i valori validi includono:
-
ssm
: parametro in testo normale di Archivio parametri Systems Manager. -
ssm-secure
: parametro di stringa sicura di Archivio parametri Systems Manager.Nota
Attualmente, SecureString i parametri non sono supportati da Systems Manager nelle
cn-northwest-1
regionicn-north-1
and.Per ulteriori informazioni, consulta Archivio dei parametri AWS Systems Manager nella Guida per l'utente di AWS Systems Manager .
-
secretsmanager
: segreto di Secrets Manager.
-
- reference-key
-
La chiave di riferimento. A seconda del tipo di riferimento dinamico, la chiave di riferimento può essere costituita da più segmenti.
Obbligatorio.
Parametri di Systems Manager
Utilizza il riferimento dinamico ssm
per includere nei modelli valori archiviati di tipo String
o StringList
presenti in Archivio parametri Systems Manager.
Schema di riferimento
Per Systems Manager Parameters, il reference-key
segmento è composto dal nome del parametro e dal numero di versione. Utilizza lo schema seguente:
'{{resolve:ssm:
parameter-name
:version
}}'
Il riferimento deve essere conforme allo schema di espressione regolare per parameter-name e version:
'{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}'
- parameter-name
-
Il nome del parametro in Archivio parametri Systems Manager. Il nome di parametro prevede la distinzione tra lettere maiuscole e minuscole.
Obbligatorio.
- versione
-
Un numero intero che specifica la versione del parametro da utilizzare. Se non specificate la versione esatta, CloudFormation utilizza la versione più recente del parametro ogni volta che create o aggiornate lo stack. Per ulteriori informazioni, consulta Utilizzo delle versioni dei parametri nella Guida per l'utente di AWS Systems Manager .
Facoltativo.
Esempio
L'esempio seguente utilizza un riferimento dinamico ssm
per impostare il controllo degli accessi per un bucket S3 su un valore di parametro archiviato in Archivio parametri Systems Manager. Come specificato, CloudFormation utilizzerà la versione 2 del S3AccessControl
parametro per le operazioni di stack e change set.
JSON
"MyS3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "{{resolve:ssm:S3AccessControl:2}}" } }
YAML
MyS3Bucket: Type: 'AWS::S3::Bucket' Properties: AccessControl: '{{resolve:ssm:S3AccessControl:2}}'
Per specificare un parametro archiviato in Archivio parametri Systems Manager, devi disporre di un accesso che consente di chiamare GetParameters
per il parametro specificato. Per ulteriori informazioni, consulta Controllo dell'accesso ai parametri Systems Manager nella Guida per l'utente di AWS Systems Manager .
Ulteriori considerazioni sull'utilizzo dello schema di riferimenti dinamici ssm
:
-
Attualmente, CloudFormation non supporta l'accesso ai parametri di Systems Manager tra account.
-
Per le risorse personalizzate, CloudFormation risolve i riferimenti
ssm
dinamici prima di inviare la richiesta alla risorsa personalizzata. Per ulteriori informazioni, consulta Risorse personalizzate. -
CloudFormation non supporta l'utilizzo di etichette di parametri o parametri pubblici nei riferimenti dinamici.
Un'etichetta di parametro è un alias definito dall'utente che consente di semplificare la gestione delle diverse versioni di un parametro. Per ulteriori informazioni, consulta Etichettatura dei parametri nella Guida per l'utente di AWS Systems Manager .
Un parametro pubblico è un parametro fornito da un AWS servizio per l'utilizzo con tale servizio e memorizzato in AWS Systems Manager Parameter Store. Per un esempio di parametri pubblici, consulta Recupero dei AMI metadati ECS ottimizzati per Amazon nella Amazon Elastic Container Service Developer Guide.
-
CloudFormation attualmente non supporta il rilevamento della deriva sui riferimenti dinamici. Per i riferimenti
ssm
dinamici in cui non è stata specificata la versione del parametro, si consiglia, se si aggiorna la versione del parametro in Systems Manager, di eseguire anche un'operazione di aggiornamento dello stack su tutti gli stack che includono il riferimentossm
dinamico, per recuperare la versione più recente dei parametri. -
Per verificare quale versione di un riferimento dinamico
ssm
verrà utilizzata in un'operazione di stack, creare un set di modifiche per l'operazione dello stack. Quindi, esaminare il modello elaborato nella scheda Modello . -
CloudFormation supporta l'uso di riferimenti dinamici per specificare i valori dei parametri nella
Parameters
sezione dei modelli. Se si utilizza il pattern di parametrissm
ossm-secure
dynamic per specificare i valori dei parametri nellaParameters
sezione, è necessario specificare la versione del parametro Systems Manager CloudFormation da utilizzare. I parametri di Systems Manager senza una versione non sono supportati nellaParameters
sezione. In alternativa, utilizzate i tipi di parametri di Systems Manager CloudFormation per consentire invece di recuperare la versione più recente. Per ulteriori informazioni, consulta Tipi di parametri di Systems Manager.
Parametri di stringa sicuri di Systems Manager
Utilizzate il modello di riferimento ssm-secure
dinamico per specificare i parametri AWS Systems Manager
SecureString
di tipo nei modelli. Per i riferimenti ssm-secure
dinamici, CloudFormation non memorizza mai il valore effettivo del parametro. CloudFormation accede al valore del parametro durante le operazioni di creazione e aggiornamento di pile e set di modifiche. Al momento, i parametri di stringa sicura possono essere utilizzati solo per proprietà di risorsa che supportano lo schema di riferimenti dinamici ssm-secure
.
Un parametro di stringa sicura è costituito da dati sensibili che devono essere archiviati e a cui è necessario fare riferimento in modo sicuro. Ovvero, dati che gli utenti non devono modificare o a cui non devono fare riferimento in testo non crittografato, ad esempio password o chiavi di licenza. Per ulteriori informazioni sulle stringhe sicure, consulta l'argomento relativo all'utilizzo dei parametri di stringa sicura nella Guida per l'utente di AWS Systems Manager .
I valori dei parametri di Secure String non vengono memorizzati e non vengono restituiti nei risultati delle API chiamate. CloudFormation
Schema di riferimento
Per i riferimenti dinamici ssm-secure
, il segmento reference-key
è composto da nome di parametro e numero di versione. Utilizza lo schema seguente:
'{{resolve:ssm-secure:
parameter-name
:version
}}'
Il riferimento deve essere conforme allo schema di espressione regolare per parameter-name e version:
'{{resolve:ssm-secure:[a-zA-Z0-9_.\-/]+(:\d+)?}}'
- parameter-name
-
Il nome del parametro in Archivio parametri Systems Manager. Il nome di parametro prevede la distinzione tra lettere maiuscole e minuscole.
Obbligatorio.
- versione
-
Un numero intero che specifica la versione del parametro da utilizzare. Se non specifichi la versione esatta, AWS CloudFormation utilizza la versione più recente del parametro ogni volta che crei o aggiorni lo stack. Per ulteriori informazioni, consulta Utilizzo delle versioni dei parametri nella Guida per l'utente di AWS Systems Manager .
Facoltativo.
Esempio
L'esempio seguente utilizza un riferimento ssm-secure
dinamico per impostare la password di un IAM utente su una stringa sicura memorizzata in Systems Manager Parameter Store. Come specificato, CloudFormation utilizzerà la versione 10 del IAMUserPassword
parametro per le operazioni di stack e change set.
JSON
"MyIAMUser": { "Type": "AWS::IAM::User", "Properties": { "UserName": "MyUserName", "LoginProfile": { "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}" } } }
YAML
MyIAMUser: Type: AWS::IAM::User Properties: UserName: 'MyUserName' LoginProfile: Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'
Ulteriori considerazioni sull'utilizzo dello schema di riferimenti dinamici ssm-secure
:
-
CloudFormation non restituisce il valore effettivo del parametro per le stringhe sicure in nessuna API chiamata, ma restituisce piuttosto il riferimento dinamico letterale.
-
CloudFormation memorizza il riferimento dinamico letterale, che contiene il nome del parametro in testo semplice della stringa sicura.
-
Per i set di modifiche, CloudFormation confronta la stringa di riferimento dinamica letterale. Non risolve e non confronta i valori effettivi dei riferimenti
ssm-secure
. -
I riferimenti dinamici per valori sicuri, come
ssm-secure
esecretsmanager
, non sono attualmente supportati nelle risorse personalizzate. -
Nei casi in cui è CloudFormation necessario eseguire il rollback di un aggiornamento dello stack, l'operazione di rollback di aggiornamento avrà esito negativo se la versione precedentemente specificata di un parametro di stringa sicura non è più disponibile. In tal caso, procedi in uno dei seguenti modi:
-
Utilizza
CONTINUE_UPDATE_ROLLBACK
per ignorare la risorsa. -
Ricrea il parametro di stringa sicura in Archivio parametri Systems Manager e aggiornalo fino a che la versione del parametro è identica alla versione utilizzata nel modello. Utilizza quindi
CONTINUE_UPDATE_ROLLBACK
senza ignorare la risorsa.
-
-
Attualmente, CloudFormation non supporta l'accesso ai parametri di Systems Manager tra account.
-
CloudFormation non supporta l'utilizzo di etichette di parametri o parametri pubblici nei riferimenti dinamici.
Un'etichetta di parametro è un alias definito dall'utente che consente di semplificare la gestione delle diverse versioni di un parametro. Per ulteriori informazioni, consulta Etichettatura dei parametri nella Guida per l'utente di AWS Systems Manager .
Un parametro pubblico è un parametro fornito da un AWS servizio per l'utilizzo con tale servizio e memorizzato in AWS Systems Manager Parameter Store. Per un esempio di parametri pubblici, consulta Recupero dei AMI metadati ECS ottimizzati per Amazon nella Amazon Elastic Container Service Developer Guide.
Risorse che supportano schemi di parametri dinamici per stringhe sicure
Attualmente, le risorse che supportano lo schema di riferimenti dinamici ssm-secure
sono:
Risorsa | Tipo di proprietà | Proprietà |
---|---|---|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Segreti di Secrets Manager
Utilizza il riferimento dinamico secretsmanager
per recuperare interi segreti o valori di segreto archiviati in Secrets Manager per l'utilizzo nei modelli. I segreti possono essere credenziali del database, password, API chiavi di terze parti o testo arbitrario. Utilizzando Secrets Manager, è possibile archiviare e controllare l'accesso a questi segreti centralmente, in modo da poter sostituire le credenziali codificate nel codice (comprese le password) con una chiamata a API Secrets Manager per recuperare il segreto a livello di codice. Per ulteriori informazioni, consulta Cos'è? AWS Secrets Manager nella Guida AWS Secrets Manager per l'utente.
Considerazioni importanti sull'uso di riferimenti dinamici per i segreti di Secrets Manager
Quando utilizzi i riferimenti dinamici per specificare i segreti di Secrets Manager nei modelli di stack, devi tenere conto delle seguenti considerazioni importanti sulla sicurezza:
-
Il riferimento dinamico
secretsmanager
può essere utilizzato in tutte le proprietà di risorsa. L'utilizzo del riferimentosecretsmanager
dinamico indica che né Secrets Manager né CloudFormation i log devono mantenere alcun valore segreto risolto. Tuttavia, il valore di segreto può essere visualizzato nel servizio proprietario della risorsa in cui è utilizzato. Rivedi l'utilizzo per evitare perdite di dati segreti. -
L'aggiornamento di un segreto in Secrets Manager non aggiorna automaticamente il segreto in CloudFormation. CloudFormation Per aggiornare un riferimento
secretsmanager
dinamico, è necessario eseguire un aggiornamento dello stack che aggiorni la risorsa contenente il riferimento dinamico, aggiornando la proprietà della risorsa che contiene il riferimentosecretsmanager
dinamico o aggiornando un'altra proprietà della risorsa.Supponiamo, ad esempio, che nel modello specifichi la proprietà
MasterPassword
di una risorsaAWS::RDS::DBInstance
come riferimento dinamicosecretsmanager
, e poi crei uno stack dal modello. Successivamente puoi aggiornare il valore del segreto in Secrets Manager, ma non la risorsaAWS::RDS::DBInstance
nel modello. In questo caso, anche se si esegue un aggiornamento dello stack, il valore segreto nella proprietàMasterPassword
non viene aggiornato e rimane il valore segreto precedente.Inoltre, ti consigliamo di utilizzare Secrets Manager per ruotare automaticamente il segreto per un servizio o un database protetto. Per ulteriori informazioni, consulta Rotazione dei segreti AWS Secrets Manager.
-
I riferimenti dinamici per valori sicuri, come
secretsmanager
, non sono attualmente supportati nelle risorse personalizzate.
Autorizzazioni richieste
Per specificare un segreto archiviato in Secrets Manager, devi disporre dell'accesso alla chiamata per il segreto GetSecretValue
.
Schema di riferimento
Per i segreti di Secrets Manager, il segmento reference-key
è composto da vari segmenti, tra cui l'ID segreto, la chiave del valore di segreto, la fase della versione e l'ID versione. Utilizza lo schema seguente:
{{resolve:secretsmanager:
secret-id
:secret-string
:json-key
:version-stage
:version-id
}}
- secret-id
-
Il nome o ARN del segreto.
Per accedere a un segreto nel tuo Account AWS, devi solo specificare il nome segreto. Per accedere a un segreto in un altro Account AWS, specifica la sua completezzaARN.
Obbligatorio.
- secret-string
-
Attualmente, l'unico valore supportato è
SecretString
. Il valore predefinito èSecretString
. - json-key
-
Il nome della chiave della coppia chiave-valore di cui intendi recuperare il valore. Se non specifichi a
json-key
, CloudFormation recupera l'intero testo segreto.Questo segmento può non includere il carattere di due punti (
:
). - version-stage
-
L'etichetta temporanea della versione del segreto da utilizzare. Secrets Manager utilizza le etichette temporanee per tenere traccia delle differenti versioni durante il processo di rotazione. Se utilizzi
version-stage
, non specificareversion-id
. Se non specifichi néversion-stage
néversion-id
, la versione di default sarà laAWSCURRENT
.Questo segmento può non includere il carattere di due punti (
:
). - version-id
-
L'identificatore univoco della versione del segreto da utilizzare. Se specifichi
version-id
, non è necessario specificare ancheversion-stage
. Se non specifichi néversion-stage
néversion-id
, la versione di default sarà laAWSCURRENT
.Questo segmento può non includere il carattere di due punti (
:
).
Esempi
L'esempio seguente utilizza i json-key
segmenti secret-name
and per recuperare i valori del nome utente e della password memorizzati nel segreto M. yRDSSecret Per impostazione predefinita, la versione del segreto recuperata è la versione con il valore di fase di versione AWSCURRENT
.
JSON
{ "MyRDSInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName": "MyRDSInstance", "AllocatedStorage": "20", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "MasterUsername": "{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}", "MasterUserPassword": "{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}" } } }
YAML
MyRDSInstance: Type: 'AWS::RDS::DBInstance' Properties: DBName: MyRDSInstance AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}' MasterUserPassword: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}'
Specificando i seguenti segmenti si recupererebbe il modulo. SecretString
MySecret
'{{resolve:secretsmanager:MySecret}}'
o '{{resolve:secretsmanager:MySecret::::}}'
Specificando i seguenti segmenti si recupererebbe il valore di. password
MySecret
'{{resolve:secretsmanager:MySecret:SecretString:password}}'
Specificando i seguenti segmenti si recupererebbe il formato contenuto in un altro. SecretString
MySecret
Account AWSÈ necessario specificare il segreto completo ARN per accedere ai segreti di un altro. Account AWS
'{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3}}'
Specificando i seguenti segmenti si recupererebbe il password
valore MySecret
che si trova in un altro. Account AWSÈ necessario specificare il segreto completo ARN per accedere ai segreti di un altro. Account AWS
'{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3:SecretString:password}}'
Specificando i seguenti segmenti si recupererebbe il password
valore per la AWSPREVIOUS
versione di. MySecret
'{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}'