Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Récupérez les valeurs secrètes
Utilisez le IPC service de gestion des secrets pour récupérer les valeurs secrètes à partir des secrets du périphérique principal. Vous utilisez le composant gestionnaire de secrets pour déployer des secrets chiffrés sur les appareils principaux. Vous pouvez ensuite utiliser une IPC opération pour déchiffrer le secret et utiliser sa valeur dans vos composants personnalisés.
SDKVersions minimales
Le tableau suivant répertorie les versions minimales Kit SDK des appareils AWS IoT que vous devez utiliser pour récupérer des valeurs secrètes à partir de secrets sur le périphérique principal.
SDK | Version minimale |
---|---|
v1.2.10 |
|
v1.5.3 |
|
v1.17.0 |
|
v1.12.0 |
Autorisation
Pour utiliser le gestionnaire de secrets dans un composant personnalisé, vous devez définir des politiques d'autorisation qui permettent à votre composant d'obtenir la valeur des secrets que vous stockez sur le périphérique principal. Pour plus d'informations sur la définition des politiques d'autorisation, consultezAutoriser les composants à effectuer des IPC opérations.
Les politiques d'autorisation pour Secret Manager possèdent les propriétés suivantes.
IPCidentifiant de service : aws.greengrass.SecretManager
Opération | Description | Ressources |
---|---|---|
|
Permet à un composant d'obtenir la valeur des secrets chiffrés sur le périphérique principal. |
Un secret du Secrets ManagerARN, ou |
Exemples de politiques d'autorisation
Vous pouvez vous référer à l'exemple de politique d'autorisation suivant pour vous aider à configurer les politiques d'autorisation pour vos composants.
Exemple de politique d'autorisation
L'exemple de politique d'autorisation suivant permet à un composant d'obtenir la valeur de n'importe quel secret sur le périphérique principal.
Note
Dans un environnement de production, nous vous recommandons de réduire la portée de la politique d'autorisation afin que le composant ne récupère que les secrets qu'il utilise. Vous pouvez remplacer le *
caractère générique par une liste de secrets ARNs lorsque vous déployez le composant.
{ "accessControl": { "aws.greengrass.SecretManager": { "
com.example.MySecretComponent
:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } }
GetSecretValue
Obtient la valeur d'un secret que vous stockez sur le périphérique principal.
Cette opération est similaire à l'opération Secrets Manager que vous pouvez utiliser pour obtenir la valeur d'un secret dans le AWS Cloud. Pour plus d'informations, consultez GetSecretValue dans la référence AWS Secrets Manager API.
Demande
La demande de cette opération comporte les paramètres suivants :
refresh
(Python :refresh
)-
(facultatif) : s'il faut synchroniser le secret demandé avec sa dernière valeur du AWS Secrets Manager service.
Lorsqu'il est défini sur true, le gestionnaire de secrets demande au AWS Secrets Manager service la dernière valeur de l'étiquette secrète spécifiée et renvoie cette valeur en réponse. Dans le cas contraire, la valeur secrète stockée localement sera renvoyée.
Ce paramètre ne fonctionnera pas conjointement avec le
versionId
paramètre de la demande. Ce paramètre fonctionne lorsqu'il est utilisé conjointement avec Nucleus 2.13.0 et versions ultérieures. secretId
(Python :secret_id
)-
Le nom du secret à obtenir. Vous pouvez spécifier le nom de ressource Amazon (ARN) ou le nom convivial du secret.
versionId
(Python :version_id
)-
(Facultatif) L'ID de la version à obtenir.
Vous pouvez spécifier
versionId
ouversionStage
.Si vous ne spécifiez pas
versionId
ouversionStage
, cette opération utilise par défaut la version avec l'AWSCURRENT
étiquette. versionStage
(Python :version_stage
)-
(Facultatif) L'étiquette de mise en scène de la version à obtenir.
Vous pouvez spécifier
versionId
ouversionStage
.Si vous ne spécifiez pas
versionId
ouversionStage
, cette opération utilise par défaut la version avec l'AWSCURRENT
étiquette.
Réponse
La réponse de cette opération contient les informations suivantes :
secretId
(Python :secret_id
)-
L'identifiant du secret.
versionId
(Python :version_id
)-
L'ID de cette version du secret.
versionStage
(Python :version_stage
)-
La liste des labels de mise en scène attachés à cette version du secret.
secretValue
(Python :secret_value
)-
La valeur de cette version du secret. Cet objet contient
SecretValue
les informations suivantes.secretString
(Python :secret_string
)-
Partie déchiffrée des informations secrètes protégées que vous avez fournies à Secrets Manager sous forme de chaîne.
secretBinary
(Python :secret_binary
)-
(Facultatif) Partie déchiffrée des informations secrètes protégées que vous avez fournies à Secrets Manager sous forme de données binaires sous la forme d'un tableau d'octets. Cette propriété contient les données binaires sous forme de chaîne codée en base64.
Cette propriété n'est pas utilisée si vous avez créé le secret dans la console Secrets Manager.
Exemples
Les exemples suivants montrent comment appeler cette opération dans le code de composant personnalisé.
Exemples
Utilisez les exemples suivants pour apprendre à utiliser le IPC service Secret Manager dans vos composants.
Cet exemple de composant imprime la valeur d'un secret que vous déployez sur le périphérique principal.
Important
Cet exemple de composant imprime la valeur d'un secret. Ne l'utilisez donc qu'avec les secrets qui stockent des données de test. N'utilisez pas ce composant pour imprimer la valeur d'un secret contenant des informations importantes.
Rubriques
Recipe
L'exemple de recette suivant définit un paramètre ARN de configuration secret et permet au composant d'obtenir la valeur de n'importe quel secret sur le périphérique principal.
Note
Dans un environnement de production, nous vous recommandons de réduire la portée de la politique d'autorisation afin que le composant ne récupère que les secrets qu'il utilise. Vous pouvez remplacer le *
caractère générique par une liste de secrets ARNs lorsque vous déployez le composant.
Artefacts
L'exemple d'application Python suivant montre comment utiliser le IPC service de gestion des secrets pour obtenir la valeur d'un secret sur le périphérique principal.
import concurrent.futures import json import sys import traceback import awsiot.greengrasscoreipc from awsiot.greengrasscoreipc.model import ( GetSecretValueRequest, GetSecretValueResponse, UnauthorizedError ) TIMEOUT = 10 if len(sys.argv) == 1: print('Provide SecretArn in the component configuration.', file=sys.stdout) exit(1) secret_id = sys.argv[1] try: ipc_client = awsiot.greengrasscoreipc.connect() request = GetSecretValueRequest() request.secret_id = secret_id operation = ipc_client.new_get_secret_value() operation.activate(request) future_response = operation.get_response() try: response = future_response.result(TIMEOUT) secret_json = json.loads(response.secret_value.secret_string) print('Successfully got secret: ' + secret_id) print('Secret value: ' + str(secret_json)) except concurrent.futures.TimeoutError: print('Timeout occurred while getting secret: ' + secret_id, file=sys.stderr) except UnauthorizedError as e: print('Unauthorized error while getting secret: ' + secret_id, file=sys.stderr) raise e except Exception as e: print('Exception while getting secret: ' + secret_id, file=sys.stderr) raise e except Exception: print('Exception occurred when using IPC.', file=sys.stderr) traceback.print_exc() exit(1)
Utilisation
Vous pouvez utiliser cet exemple de composant avec le composant gestionnaire de secrets pour déployer et imprimer la valeur d'un secret sur votre périphérique principal.
Pour créer, déployer et imprimer un secret de test
-
Créez un secret Secrets Manager avec des données de test.
Enregistrez ARN le secret à utiliser dans les étapes suivantes.
Pour plus d'informations, consultez la section Création d'un secret dans le guide de AWS Secrets Manager l'utilisateur.
-
Déployez le composant secret manager (
aws.greengrass.SecretManager
) avec la mise à jour de fusion de configuration suivante. Spécifiez ARN le secret que vous avez créé précédemment.{ "cloudSecrets": [ { "arn": "
arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef
" } ] }Pour plus d'informations, consultez la Déployer AWS IoT Greengrass des composants sur des appareils commande de CLIdéploiement de Greengrass.
-
Créez et déployez le composant d'exemple présenté dans cette section avec la mise à jour de fusion de configuration suivante. Spécifiez ARN le secret que vous avez créé précédemment.
{ "SecretArn": "
arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret
", "accessControl": { "aws.greengrass.SecretManager": { "com.example.PrintSecret:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef
" ] } } } }Pour plus d’informations, consultez Création de AWS IoT Greengrass composants.
-
Consultez les journaux du logiciel AWS IoT Greengrass principal pour vérifier que les déploiements sont réussis, et consultez le journal des
com.example.PrintSecret
composants pour voir la valeur secrète imprimée. Pour de plus amples informations, veuillez consulter AWS IoT GreengrassJournaux de surveillance.