Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ambil nilai-nilai rahasia
Gunakan IPC layanan manajer rahasia untuk mengambil nilai rahasia dari rahasia pada perangkat inti. Anda menggunakan komponen secret manager untuk men-deploy rahasia terenkripsi ke perangkat inti. Kemudian, Anda dapat menggunakan IPC operasi untuk mendekripsi rahasia dan menggunakan nilainya dalam komponen kustom Anda.
SDKVersi minimum
Tabel berikut mencantumkan versi minimum AWS IoT Device SDK yang harus Anda gunakan untuk mengambil nilai rahasia dari rahasia pada perangkat inti.
SDK | Versi minimum |
---|---|
v1.2.10 |
|
v1.5.3 |
|
v1.17.0 |
|
v1.12.0 |
Otorisasi
Untuk menggunakan secrets manager dalam komponen kustom, Anda harus menentukan kebijakan otorisasi yang memungkinkan komponen Anda untuk mendapatkan nilai rahasia yang Anda simpan pada perangkat inti. Untuk informasi tentang cara menentukan kebijakan otorisasi, lihat Otorisasi komponen untuk melakukan operasi IPC.
Kebijakan otorisasi untuk secrets manager memiliki properti berikut.
IPCpengidentifikasi layanan: aws.greengrass.SecretManager
Operasi | Deskripsi | Sumber daya |
---|---|---|
|
Memungkinkan komponen untuk mendapatkan nilai rahasia yang dienkripsi pada perangkat inti. |
Rahasia Secrets ManagerARN, atau |
Contoh kebijakan otorisasi
Anda dapat mereferensikan contoh kebijakan otorisasi berikut untuk membantu Anda mengonfigurasi kebijakan otorisasi untuk komponen Anda.
contoh Contoh kebijakan otorisasi
Kebijakan otorisasi contoh berikut memungkinkan komponen untuk mendapatkan nilai rahasia apa pun pada perangkat inti.
catatan
Kami merekomendasikan bahwa dalam lingkungan produksi, Anda mengurangi cakupan kebijakan otorisasi, sehingga komponen hanya mengambil rahasia yang digunakannya. Anda dapat mengubah *
wildcard menjadi daftar rahasia ARNs saat Anda menerapkan komponen.
{ "accessControl": { "aws.greengrass.SecretManager": { "
com.example.MySecretComponent
:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } }
GetSecretValue
Mendapatkan nilai rahasia yang Anda simpan pada perangkat inti.
Operasi ini mirip dengan operasi Secrets Manager yang dapat Anda gunakan untuk mendapatkan nilai rahasia di AWS Cloud. Untuk informasi selengkapnya, lihat GetSecretValue dalam Referensi AWS Secrets Manager API.
Permintaan
Permintaan operasi ini memiliki parameter berikut:
refresh
(Python:)refresh
-
(opsional): Apakah akan menyinkronkan rahasia yang diminta dengan nilai terbaru dari AWS Secrets Manager layanan.
Ketika disetel ke true, manajer rahasia akan meminta AWS Secrets Manager layanan untuk nilai terbaru dari label rahasia yang ditentukan dan mengembalikan nilai itu sebagai respons. Jika tidak, nilai rahasia yang disimpan secara lokal akan dikembalikan.
Parameter ini tidak akan bekerja bersama dengan
versionId
parameter dalam permintaan. Parameter ini bekerja bila digunakan bersama dengan Nucleus 2.13.0 dan di atasnya. secretId
(Python:)secret_id
-
Nama layanan yang akan didapat. Anda dapat menentukan Amazon Resource Name (ARN) atau nama rahasia yang ramah.
versionId
(Python:)version_id
-
(Opsional) ID dari versi yang akan didapatkan.
Anda dapat menentukan
versionId
atauversionStage
.Jika Anda tidak menentukan
versionId
atauversionStage
, operasi ini default ke versi dengan labelAWSCURRENT
. versionStage
(Python:)version_stage
-
(Opsional) Label penahapan dari versi yang akan didapatkan.
Anda dapat menentukan
versionId
atauversionStage
.Jika Anda tidak menentukan
versionId
atauversionStage
, operasi ini default ke versi dengan labelAWSCURRENT
.
Respons
Tanggapan operasi ini memiliki informasi berikut:
secretId
(Python:)secret_id
-
ID dari rahasia tersebut.
versionId
(Python:)version_id
-
ID dari versi rahasia ini.
versionStage
(Python:)version_stage
-
Daftar label penahapan yang melekat pada versi rahasia ini.
secretValue
(Python:)secret_value
-
Nilai dari versi rahasia ini. Objek ini,
SecretValue
, berisi informasi berikut.secretString
(Python:)secret_string
-
Bagian yang didekripsi dari informasi rahasia terlindungi yang Anda berikan kepada Secrets Manager sebagai string.
secretBinary
(Python:)secret_binary
-
(Opsional) Bagian yang didekripsi dari informasi rahasia terlindungi yang Anda berikan kepada Secrets Manager sebagai data biner dalam bentuk himpunan byte. Properti ini berisi data biner sebagai string base64-encoded.
Properti ini tidak digunakan jika Anda membuat rahasia di konsol Secrets Manager.
Contoh
Contoh berikut ini mendemonstrasikan cara memanggil operasi ini dalam kode komponen kustom.
Contoh
Gunakan contoh berikut untuk mempelajari cara menggunakan IPC layanan manajer rahasia di komponen Anda.
Contoh komponen ini mencetak nilai suatu rahasia yang Anda deploy ke perangkat inti tersebut.
penting
Contoh komponen ini mencetak nilai rahasia, jadi gunakan hanya dengan rahasia yang menyimpan data uji. Jangan gunakan komponen ini untuk mencetak nilai rahasia yang menyimpan informasi penting.
Resep
Contoh resep berikut mendefinisikan parameter ARN konfigurasi rahasia dan memungkinkan komponen untuk mendapatkan nilai rahasia apa pun pada perangkat inti.
catatan
Kami merekomendasikan bahwa dalam lingkungan produksi, Anda mengurangi cakupan kebijakan otorisasi, sehingga komponen hanya mengambil rahasia yang digunakannya. Anda dapat mengubah *
wildcard menjadi daftar rahasia ARNs saat Anda menerapkan komponen.
Artifacts
Contoh berikut aplikasi Python menunjukkan bagaimana menggunakan IPC layanan manajer rahasia untuk mendapatkan nilai rahasia pada perangkat inti.
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)
Penggunaan
Anda dapat menggunakan komponen contoh ini dengan komponen secret manager untuk men-deploy dan mencetak nilai rahasia pada perangkat inti Anda.
Untuk membuat, men-deploy, dan mencetak rahasia uji
-
Buat rahasia Secrets Manager dengan data uji.
Simpan rahasia untuk digunakan dalam langkah-langkah berikut. ARN
Untuk informasi selengkapnya, lihat Membuat rahasia di Panduan Pengguna AWS Secrets Manager .
-
Deploy komponen secret manager (
aws.greengrass.SecretManager
) dengan pembaruan gabungan konfigurasi berikut. Tentukan ARN rahasia yang Anda buat sebelumnya.{ "cloudSecrets": [ { "arn": "
arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef
" } ] }Untuk informasi selengkapnya, lihat Deploy komponen AWS IoT Greengrass ke perangkat atau perintah penyebaran Greengrass CLI.
-
Buat dan deploy komponen contoh pada bagian ini dengan pembaruan gabungan konfigurasi berikut. Tentukan ARN rahasia yang Anda buat sebelumnya.
{ "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
" ] } } } }Untuk informasi selengkapnya, silakan lihat Buat AWS IoT Greengrass komponen
-
Lihat log perangkat lunak AWS IoT Greengrass Inti untuk memverifikasi bahwa penerapan berhasil, dan lihat log
com.example.PrintSecret
komponen untuk melihat nilai rahasia yang dicetak. Untuk informasi selengkapnya, lihat Memantau AWS IoT Greengrass log.