Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Recuperar valores secretos
Utilice el IPC servicio de administración de secretos para recuperar los valores secretos de los secretos del dispositivo principal. El componente de administrador de secretos se utiliza para implementar secretos cifrados en los dispositivos principales. A continuación, puede utilizar una IPC operación para descifrar el secreto y utilizar su valor en los componentes personalizados.
Versiones mínimas SDK
En la siguiente tabla se enumeran las versiones mínimas de las SDK para dispositivos con AWS IoT que debe utilizar para recuperar los valores secretos de los secretos del dispositivo principal.
SDK | Versión mínima |
---|---|
v1.2.10 |
|
v1.5.3 |
|
v1.17.0 |
|
v1.12.0 |
Autorización
Para usar el administrador de secretos en un componente personalizado, debe definir políticas de autorización que permitan a su componente obtener el valor de los secretos que almacena en el dispositivo principal. Para obtener información sobre cómo definir las políticas de autorización, consulteAutorice a los componentes a realizar operaciones IPC.
Las políticas de autorización del administrador secreto tienen las siguientes propiedades.
IPCidentificador de servicio: aws.greengrass.SecretManager
Operación | Descripción | Recursos |
---|---|---|
|
Permite que un componente obtenga el valor de los secretos que están cifrados en el dispositivo principal. |
Un secreto de ARN Secrets Manager o |
Ejemplos de políticas de autorización
Puede hacer referencia al siguiente ejemplo de política de autorización para ayudarle a configurar las políticas de autorización para sus componentes.
ejemplo Ejemplo de política de autorización
El siguiente ejemplo de política de autorización permite a un componente obtener el valor de cualquier secreto del dispositivo principal.
nota
En un entorno de producción, se recomienda reducir el alcance de la política de autorización para que el componente recupere solo los secretos que utiliza. Puede cambiar el *
comodín por una lista de secretos ARNs al implementar el componente.
{ "accessControl": { "aws.greengrass.SecretManager": { "
com.example.MySecretComponent
:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } }
GetSecretValue
Obtiene el valor de un secreto que se almacena en el dispositivo principal.
Esta operación es similar a la operación Secrets Manager, que puede utilizar para obtener el valor de un secreto en Nube de AWS. Para obtener más información, consulte GetSecretValuela AWS Secrets Manager APIReferencia.
Solicitud
La solicitud de esta operación tiene los siguientes parámetros:
refresh
(Python:refresh
)-
(opcional): si se debe sincronizar el secreto solicitado con su último valor del AWS Secrets Manager servicio.
Si se establece en true, el administrador de secretos solicitará al AWS Secrets Manager servicio el valor más reciente de la etiqueta secreta especificada y devolverá ese valor como respuesta. De lo contrario, se devolverá el valor secreto que estaba almacenado localmente.
Este parámetro no funcionará junto con el
versionId
parámetro de la solicitud. secretId
(Python:secret_id
)-
El nombre del secreto que hay que obtener. Puede especificar el nombre del recurso de Amazon (ARN) o el nombre descriptivo del secreto.
versionId
(Python:version_id
)-
(Opcional) El ID de la versión que se va a obtener.
Puede especificar
versionId
oversionStage
.Si no se especifica
versionId
oversionStage
, esta operación toma como valor predeterminado la versión con laAWSCURRENT
etiqueta. versionStage
(Python:version_stage
)-
(Opcional) La etiqueta provisional de la versión que se va a obtener.
Puede especificar
versionId
oversionStage
.Si no especifica
versionId
oversionStage
, esta operación toma como valor predeterminado la versión con laAWSCURRENT
etiqueta.
Respuesta
La respuesta de esta operación contiene la siguiente información:
secretId
(Python:secret_id
)-
El ID del secreto.
versionId
(Python:version_id
)-
El ID de esta versión del secreto.
versionStage
(Python:version_stage
)-
La lista de etiquetas de puesta en escena adjunta a esta versión del secreto.
secretValue
(Python:secret_value
)-
El valor de esta versión del secreto. Este objeto,
SecretValue
, contiene la siguiente información.secretString
(Python:secret_string
)-
La parte descifrada de la información secreta protegida que proporcionaste a Secrets Manager en forma de cadena.
secretBinary
(Python:secret_binary
)-
(Opcional) La parte descifrada de la información secreta protegida que proporcionó a Secrets Manager como datos binarios en forma de matriz de bytes. Esta propiedad contiene los datos binarios como una cadena codificada en base64.
Esta propiedad no se utiliza si ha creado el secreto en la consola de Secrets Manager.
Ejemplos
Los siguientes ejemplos muestran cómo llamar a esta operación en un código de componente personalizado.
Ejemplos
Utilice los siguientes ejemplos para aprender a utilizar el IPC servicio de administrador secreto en sus componentes.
Este componente de ejemplo imprime el valor de un secreto que se implementa en el dispositivo principal.
importante
Este componente de ejemplo imprime el valor de un secreto, así que utilícelo solo con los secretos que almacenan datos de prueba. No utilice este componente para imprimir el valor de un secreto que almacena información importante.
Temas
Receta
La siguiente receta de ejemplo define un parámetro de ARN configuración secreto y permite que el componente obtenga el valor de cualquier secreto del dispositivo principal.
nota
En un entorno de producción, se recomienda reducir el alcance de la política de autorización para que el componente recupere solo los secretos que utiliza. Puede cambiar el *
comodín por una lista de secretos ARNs al implementar el componente.
Artefactos
El siguiente ejemplo de aplicación de Python muestra cómo utilizar el IPC servicio de administrador de secretos para obtener el valor de un secreto en el dispositivo 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)
Uso
Puede usar este componente de ejemplo con el componente de administrador de secretos para implementar e imprimir el valor de un secreto en su dispositivo principal.
Para crear, implementar e imprimir un secreto de prueba
-
Crea un secreto de Secrets Manager con los datos de las pruebas.
ARNGuarde el secreto para usarlo en los siguientes pasos.
Para obtener más información, consulte Creación de un secreto en la Guía del AWS Secrets Manager usuario.
-
Implemente el componente de administrador de secretos (
aws.greengrass.SecretManager
) con la siguiente actualización de combinación de configuraciones. Especifique ARN el secreto que creó anteriormente.{ "cloudSecrets": [ { "arn": "
arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef
" } ] }Para obtener más información, consulte Implemente AWS IoT Greengrass componentes en los dispositivos o el comando de CLIdespliegue de Greengrass.
-
Cree e implemente el componente de ejemplo de esta sección con la siguiente actualización de combinación de configuraciones. Especifique ARN el secreto que creó anteriormente.
{ "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
" ] } } } }Para obtener más información, consulte Crear AWS IoT Greengrass componentes
-
Consulte los registros del software AWS IoT Greengrass principal para comprobar que las implementaciones se han realizado correctamente y consulte el registro de
com.example.PrintSecret
componentes para ver impreso el valor secreto. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.