As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Recuperar valores de segredos
Use o IPC serviço de gerenciamento de segredos para recuperar valores secretos de segredos no dispositivo principal. Você usa o componente gerenciador de segredos para implantar segredos criptografados nos dispositivos principais. Em seguida, você pode usar uma IPC operação para descriptografar o segredo e usar seu valor em seus componentes personalizados.
SDKVersões mínimas
A tabela a seguir lista as versões mínimas do AWS IoT Device SDK que você deve usar para recuperar valores secretos de segredos no dispositivo principal.
SDK | Versão mínima |
---|---|
v1.2.10 |
|
v1.5.3 |
|
v1.17.0 |
|
v1.12.0 |
Autorização
Para usar o gerenciador de segredos em um componente personalizado, você deve definir políticas de autorização que permitam que seu componente obtenha o valor dos segredos que você armazena no dispositivo principal. Para obter informações sobre a definição de políticas de autorização, consulte Autorizar componentes a realizar operações IPC.
As políticas de autorização do gerenciador de segredo têm as seguintes propriedades.
IPCidentificador de serviço: aws.greengrass.SecretManager
Operação | Descrição | Recursos |
---|---|---|
|
Permite que um componente obtenha o valor dos segredos criptografados no dispositivo principal. |
Um segredo do Secrets ManagerARN, ou |
Exemplos de política de autorização
Consulte o exemplo de política de autorização a seguir para configurar políticas de autorização para seus componentes.
exemplo Exemplo de política de autorização
O exemplo de política de autorização a seguir permite que um componente obtenha o valor de qualquer segredo no dispositivo principal.
nota
Recomendamos que, em um ambiente de produção, você reduza o escopo da política de autorização para que o componente recupere somente os segredos que ele usa. Você pode alterar o *
caractere curinga para uma lista de segredos ARNs ao implantar o componente.
{ "accessControl": { "aws.greengrass.SecretManager": { "
com.example.MySecretComponent
:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } }
GetSecretValue
Obtém o valor de um segredo que você armazena no dispositivo principal.
Essa operação é semelhante à operação do Secrets Manager que você pode usar para obter o valor de um segredo na Nuvem AWS. Para obter mais informações, consulte GetSecretValue na AWS Secrets Manager API Referência.
Solicitação
A solicitação dessa operação tem os seguintes parâmetros:
refresh
(Python:refresh
)-
(opcional): se o segredo solicitado deve ser sincronizado com o valor mais recente do AWS Secrets Manager serviço.
Quando definido como verdadeiro, o gerenciador secreto solicitará AWS Secrets Manager ao serviço o valor mais recente do rótulo secreto especificado e retornará esse valor como resposta. Caso contrário, o valor secreto que foi armazenado localmente será retornado.
Esse parâmetro não funcionará em conjunto com o parâmetro
versionId
na solicitação. Esse parâmetro funciona quando usado em conjunto com o Nucleus 2.13.0 e versões posteriores. secretId
(Python:secret_id
)-
O nome do segredo a ser obtido. Você pode especificar o Amazon Resource Name (ARN) ou o nome amigável do segredo.
versionId
(Python:version_id
)-
(Opcional) O ID da versão do segredo a ser obtido.
É possível especificar
versionId
ouversionStage
.Se você não especificar
versionId
ouversionStage
, essa operação usará como padrão a versão com o rótuloAWSCURRENT
. versionStage
(Python:version_stage
)-
(Opcional) O rótulo de preparação da versão a ser obtida.
É possível especificar
versionId
ouversionStage
.Se você não especificar
versionId
ouversionStage
, essa operação usará como padrão a versão com o rótuloAWSCURRENT
.
Resposta
A resposta dessa operação tem as seguintes informações:
secretId
(Python:secret_id
)-
O ID do segredo.
versionId
(Python:version_id
)-
O ID dessa versão do segredo.
versionStage
(Python:version_stage
)-
A lista de etiquetas de preparação anexadas a essa versão do segredo.
secretValue
(Python:secret_value
)-
O valor dessa versão do segredo. Esse objeto,
SecretValue
, contém as informações a seguir.secretString
(Python:secret_string
)-
A parte descriptografada das informações secretas protegidas que você forneceu ao Secrets Manager como uma string.
secretBinary
(Python:secret_binary
)-
(Opcional) A parte descriptografada das informações secretas protegidas que você forneceu ao Secrets Manager como dados binários na forma de uma matriz de bytes. Essa propriedade contém os dados binários como uma string codificada em base64.
Essa propriedade não será usada se você criou o segredo no console do Secrets Manager.
Exemplos
Os exemplos a seguir demonstram como chamar essa operação no código do componente personalizado.
Exemplos
Use os exemplos a seguir para aprender a usar o IPC serviço de gerenciamento secreto em seus componentes.
Esse componente de exemplo imprime o valor de um segredo que você implanta no dispositivo principal.
Importante
Esse componente de exemplo imprime o valor de um segredo, portanto, use-o somente com segredos que armazenam dados de teste. Não use esse componente para imprimir o valor de um segredo que armazena informações importantes.
Fórmula
O exemplo de receita a seguir define um parâmetro de ARN configuração secreto e permite que o componente obtenha o valor de qualquer segredo no dispositivo principal.
nota
Recomendamos que, em um ambiente de produção, você reduza o escopo da política de autorização para que o componente recupere somente os segredos que ele usa. Você pode alterar o *
caractere curinga para uma lista de segredos ARNs ao implantar o componente.
Artefatos
O exemplo de aplicativo Python a seguir demonstra como usar o IPC serviço de gerenciamento de segredos para obter o valor de um segredo no 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
Você pode usar esse componente de exemplo com o componente gerenciador de segredos para implantar e imprimir o valor de um segredo em seu dispositivo principal.
Para criar, implantar e imprimir um segredo de teste
-
Criar um segredo do Secrets Manager com dados de teste.
Salve ARN o segredo para usar nas etapas a seguir.
Para obter mais informações, consulte Criar um segredo no Guia do usuário do AWS Secrets Manager .
-
Implante o componente do gerenciador secreto (
aws.greengrass.SecretManager
) com a seguinte atualização de mesclagem de configuração. Especifique ARN o segredo que você criou anteriormente.{ "cloudSecrets": [ { "arn": "
arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef
" } ] }Para obter mais informações, consulte Implantar componentes AWS IoT Greengrass em dispositivos ou o comando de CLIimplantação do Greengrass.
-
Crie e implante o componente de exemplo nesta seção com a seguinte atualização de mesclagem de configuração. Especifique ARN o segredo que você criou 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 ter mais informações, consulte Crie AWS IoT Greengrass componentes
-
Visualize os registros do software AWS IoT Greengrass principal para verificar se as implantações foram bem-sucedidas e veja o registro do
com.example.PrintSecret
componente para ver o valor secreto impresso. Para obter mais informações, consulte Monitore AWS IoT Greengrass logs.