Utilizzo delle risorse segrete - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

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 delle risorse segrete

AWS IoT Greengrass utilizza le risorse segrete per integrare i segreti da AWS Secrets Manager in un gruppo Greengrass. Una risorsa segreta è un riferimento a un segreto di Secrets Manager. Per ulteriori informazioni, consulta Distribuzione dei segreti nel core AWS IoT Greengrass.

Sul dispositivo AWS IoT Greengrass principale, i connettori e le funzioni Lambda possono utilizzare la risorsa segreta per autenticarsi con servizi e applicazioni, senza password, token o altre credenziali di codifica.

Creazione e gestione di segreti

In un gruppo Greengrass, una risorsa segreta fa riferimento all'ARN di un segreto di Secrets Manager. Quando la risorsa segreta viene distribuita nel core, il valore del segreto viene crittografato e reso disponibile ai connettori affiliati e alle funzioni Lambda. Per ulteriori informazioni, consulta Crittografia dei segreti.

Utilizzi Secrets Manager per creare e gestire le versioni cloud dei tuoi segreti. Puoi utilizzare AWS IoT Greengrass per creare, gestire e distribuire le risorse segrete.

Importante

Ti consigliamo di seguire la procedura migliore per ruotare i tuoi segreti in Secrets Manager. Quindi, distribuirai il gruppo Greengrass per aggiornare le copie locali dei segreti. Per ulteriori informazioni, consulta Ruotare AWS Secrets Manager i propri segreti nella Guida per l'AWS Secrets Managerutente.

Per rendere un segreto disponibile nel core Greengrass

  1. Creazione di un segreto in Secrets Manager. Questa è la versione cloud del tuo segreto, archiviato e gestito centralmente in Secrets Manager. Le attività di gestione includono la rotazione dei valori dei segreti e l'applicazione di policy delle risorse.

  2. Crea una risorsa segreta in AWS IoT Greengrass. Si tratta di un tipo di risorsa di gruppo che fa riferimento al segreto nel cloud di ARN. È possibile fare riferimento a un segreto solo una volta per ogni gruppo.

  3. Configura il connettore o la funzione Lambda. È necessario affiliare la risorsa a un connettore o a una funzione specificando i parametri corrispondenti o le proprietà. In questo modo otterranno il valore della risorsa segreta distribuita in locale. Per ulteriori informazioni, consulta Utilizzo dei segreti locali nei connettori e nelle funzioni Lambda.

  4. Distribuire il gruppo Greengrass. Durante la distribuzione, AWS IoT Greengrass recupera il valore del segreto nel cloud e crea (o aggiorna) il segreto locale nel core.

Secrets Manager registra un evento AWS CloudTrail ogni volta che AWS IoT Greengrass recupera un valore segreto. AWS IoT Greengrassnon registra alcun evento relativo alla distribuzione o all'utilizzo di segreti locali. Per ulteriori informazioni sulla registrazione di Secrets Manager, consulta Monitora l'uso dei tuoi AWS Secrets Manager segreti nella Guida per l'AWS Secrets Managerutente.

Inclusione delle etichette temporanee nelle risorse segrete

Secrets Manager utilizza le etichette temporanee per identificare versioni specifiche di un valore segreto. Le etichette di gestione temporanea possono essere definite dal sistema o dall'utente. Secrets Manager assegna l'AWSCURRENTetichetta alla versione più recente del valore segreto. Le etichette di gestione temporanea vengono in genere utilizzate per gestire la rotazione dei segreti. Per ulteriori informazioni sul controllo delle versioni di Secrets Manager, vedere Termini e concetti chiave AWS Secrets Manager nella Guida per l'AWS Secrets Managerutente.

Le risorse segrete includono sempre l'etichetta AWSCURRENT di staging e, facoltativamente, possono includere altre etichette di staging se richieste da una funzione o da un connettore Lambda. Durante la distribuzione del gruppo, AWS IoT Greengrass recupera i valori delle etichette di gestione temporanea di riferimento nel gruppo, quindi crea o aggiorna i valori corrispondenti nel core.

Creazione e gestione delle risorse segrete (console)

Creazione delle risorse segrete (console)

Nella AWS IoT Greengrass console, puoi creare e gestire risorse segrete dalla scheda Segreti nella pagina Risorse del gruppo. Per i tutorial che illustrano la creazione di una risorsa segreta e la relativa aggiunta a un gruppo, consulta Come creare una risorsa segreta (console) e Nozioni di base sui connettori Greengrass (console).

Una risorsa segreta nella scheda Secret (Segreto) della pagina Resources (Risorse).
Nota

In alternativa, la console consente di creare una risorsa segreta e segreta quando si configura un connettore o una funzione Lambda. È possibile eseguire questa operazione dalla pagina Configura parametri del connettore o dalla pagina Risorse della funzione Lambda.

Gestione delle risorse segrete (console)

Le attività di gestione delle risorse segrete del tuo gruppo Greengrass includono l'aggiunta di risorse segrete al gruppo, la rimozione di risorse segrete dal gruppo e la modifica del set di etichette di gestione temporanea incluse in una risorsa segreta.

Se indichi un segreto diverso da Secrets Manager, devi anche modificare tutti i connettori che utilizzano il segreto:

  1. Nella pagina di configurazione del gruppo, scegliere Connettori.

  2. Dal menu contestuale del connettore, selezionare Modifica.

  3. Nella pagina Edit parameters (Modifica parametri) viene visualizzato un messaggio che informa che l'ARN del segreto è stato modificato. Per confermare la modifica, selezionare Save (Salva).

Se elimini un segreto in Secrets Manager, rimuovi la risorsa segreta corrispondente dal gruppo e dai connettori e dalle funzioni Lambda che vi fanno riferimento. Altrimenti, durante la distribuzione di gruppo, AWS IoT Greengrass restituisce un errore indicante che il segreto non può essere trovato. Aggiorna anche il codice della funzione Lambda secondo necessità.

Creazione e gestione delle risorse segrete (CLI)

Creazione delle risorse segrete (CLI)

Nell'API AWS IoT Greengrass, un segreto è un tipo di risorsa di gruppo. L'esempio seguente crea una definizione di risorsa con una versione iniziale che include la risorsa segreta MySecretResource. Per un tutorial che illustra la creazione di una risorsa segreta e la relativa aggiunta a un versione del gruppo, consulta Nozioni di base sui connettori Greengrass (CLI).

La risorsa segreta fa riferimento all'ARN del segreto corrispondente di Secrets Manager e include due etichette di staging in aggiunta aAWSCURRENT, che è sempre inclusa.

aws greengrass create-resource-definition --name MyGreengrassResources --initial-version '{ "Resources": [ { "Id": "my-resource-id", "Name": "MySecretResource", "ResourceDataContainer": { "SecretsManagerSecretResourceData": { "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:greengrass-SomeSecret-KUj89s", "AdditionalStagingLabelsToDownload": [ "Label1", "Label2" ] } } } ] }'

Gestione delle risorse segrete (CLI)

Le attività di gestione delle risorse segrete del tuo gruppo Greengrass includono l'aggiunta di risorse segrete al gruppo, la rimozione di risorse segrete dal gruppo e la modifica del set di etichette di gestione temporanea incluse in una risorsa segreta.

Nell'API di AWS IoT Greengrass, queste modifiche vengono implementate tramite l'utilizzo delle versioni.

L'AWS IoT GreengrassAPI utilizza versioni per gestire i gruppi. Le versioni sono immutabili, quindi per aggiungere o modificare i componenti del gruppo, ad esempio i dispositivi client, le funzioni e le risorse del gruppo, è necessario creare versioni di componenti nuovi o aggiornati. Quindi, si crea e si distribuisce una versione di gruppo che contiene la versione di destinazione di ciascun componente. Per ulteriori informazioni sui gruppi, consultaAWS IoT Greengrass gruppi.

Ad esempio, per modificare la serie di etichette di gestione temporanea di una risorsa segreta:

  1. Creare una versione della definizione di risorsa che contenga la risorsa segreta aggiornata. L'esempio seguente aggiunge una terza etichetta di gestione temporanea alla risorsa segreta della sezione precedente.

    Nota

    Per aggiungere altre risorse alla versione, includerle nella matrice Resources.

    aws greengrass create-resource-definition --name MyGreengrassResources --initial-version '{ "Resources": [ { "Id": "my-resource-id", "Name": "MySecretResource", "ResourceDataContainer": { "SecretsManagerSecretResourceData": { "ARN": "arn:aws:secretsmanager:us-west-2:123456789012:secret:greengrass-SomeSecret-KUj89s", "AdditionalStagingLabelsToDownload": [ "Label1", "Label2", "Label3" ] } } } ] }'
  2. Se l'ID della risorsa segreta viene modificato, aggiornare i connettori e le funzioni che utilizzano la risorsa segreta. Nelle nuove versioni, aggiornare il parametro o la proprietà corrispondente all'ID della risorsa. Se l'ARN del segreto viene modificato, è necessario aggiornare anche il parametro corrispondente per qualsiasi connettore che utilizza il segreto.

    Nota

    L'ID della risorsa è un identificativo arbitrario fornito dal cliente.

  3. Creare una versione del gruppo contente la versione di destinazione di ciascun componente da inviare al core.

  4. Distribuire la versione del gruppo.

Per un tutorial che mostra come creare e distribuire le risorse segrete, i connettori e le funzioni, consulta Nozioni di base sui connettori Greengrass (CLI).

Se elimini un segreto in Secrets Manager, rimuovi la risorsa segreta corrispondente dal gruppo e dai connettori e dalle funzioni Lambda che vi fanno riferimento. Altrimenti, durante la distribuzione di gruppo, AWS IoT Greengrass restituisce un errore indicante che il segreto non può essere trovato. Aggiorna anche il codice della funzione Lambda secondo necessità. Puoi rimuovere un segreto locale distribuendo una versione di definizione delle risorse che non contenga la risorsa segreta corrispondente.

Utilizzo dei segreti locali nei connettori e nelle funzioni Lambda

I connettori Greengrass e le funzioni Lambda utilizzano segreti locali per interagire con servizi e applicazioni. Il valore AWSCURRENT viene utilizzato per impostazione predefinita, ma sono anche disponibili i valori delle altre etichette temporanee incluse nella risorsa segreta.

Per consentirne l'accesso ai segreti locali, è necessario configurare i connettori e le funzioni. La risorsa viene così affiliata al connettore o alla funzione.

Connectors (Connettori)

Se un connettore richiede l'accesso a un segreto locale, fornisce i parametri da configurare con le informazioni necessarie per accedere al segreto.

Per informazioni sui requisiti dei singoli connettori, consulta AWS-connettori Greengrass forniti.

La logica per accedere e utilizzare il segreto è integrata nel connettore.

Funzioni Lambda

Per consentire a una funzione Greengrass Lambda di accedere a un segreto locale, è necessario configurare le proprietà della funzione.

  • Per informazioni su come eseguire questa operazione nella AWS IoT Greengrass console, consulta. Come creare una risorsa segreta (console)

  • Per eseguire questa operazione nell'API AWS IoT Greengrass, è necessario fornire le seguenti informazioni nella proprietà ResourceAccessPolicies.

    • ResourceId: l'ID della risorsa segreta nel gruppo Greengrass. Questa è la risorsa che fa riferimento all'ARN del segreto Secrets Manager corrispondente.

    • Permission: il tipo di accesso della funzione rispetto alla risorsa. Per le risorse segrete è supportata solo l'autorizzazione ro (sola lettura).

    L'esempio seguente crea una funzione Lambda che può accedere alla risorsa MyApiKey segreta.

    aws greengrass create-function-definition --name MyGreengrassFunctions --initial-version '{ "Functions": [ { "Id": "MyLambdaFunction", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1", "FunctionConfiguration": { "Pinned": false, "MemorySize": 16384, "Timeout": 10, "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "MyApiKey", "Permission": "ro" } ], "AccessSysfs": true } } } ] }'

     

    Per accedere ai segreti locali in fase di esecuzione, le funzioni di Greengrass Lambda richiamano la get_secret_value funzione dal secretsmanager client nel AWS IoT Greengrass Core SDK (v1.3.0 o successivo).

    L'esempio seguente mostra come usare AWS IoT Greengrass Core SDK per Python per ottenere un segreto. Passa il nome del segreto alla get_secret_value funzione. SecretIdpuò essere il nome o l'ARN del segreto di Secrets Manager (non la risorsa segreta).

    import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") secret_name = "greengrass-MySecret-abc" def function_handler(event, context): response = secrets_client.get_secret_value(SecretId=secret_name) secret = response.get("SecretString")

    Per i segreti di tipo testo, la funzione get_secret_value restituisce una stringa. Per i segreti di tipo binario, restituisce una stringa con codifica base64.

    Importante

    Assicurati che le funzioni Lambda definite dall'utente gestiscano i segreti in modo sicuro e non registrino alcun dato sensibile archiviato nel segreto. Per ulteriori informazioni, consulta Mitigare i rischi di registrazione e debug della funzione Lambda nella Guida per l'utente. AWS Secrets Manager Sebbene questa documentazione si riferisca specificamente alle funzioni di rotazione, la raccomandazione si applica anche alle funzioni Greengrass Lambda.

    Il valore corrente del segreto viene restituito per impostazione predefinita. Si tratta della versione a cui è collegata l'etichetta temporanea AWSCURRENT. Per accedere a una versione diversa, passa il nome dell'etichetta temporanea corrispondente per l'argomento facoltativo VersionStage. Ad esempio:

    import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") secret_name = "greengrass-TestSecret" secret_version = "MyTargetLabel" # Get the value of a specific secret version def function_handler(event, context): response = secrets_client.get_secret_value( SecretId=secret_name, VersionStage=secret_version ) secret = response.get("SecretString")

    Per un'altra funzione di esempio che chiama get_secret_value, consulta Creare un pacchetto di distribuzione della funzione Lambda.