Bekerja dengan sumber daya rahasia - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan sumber daya rahasia

AWS IoT Greengrass menggunakan Sumber daya rahasia untuk mengintegrasikan rahasia dari AWS Secrets Manager ke dalam grup Greengrass. Sumber daya rahasia ini mereferensi rahasia Secrets Manager. Untuk informasi lebih lanjut, lihat Men-deploy rahasia ke AWS IoT Greengrass core.

Pada perangkat core AWS IoT Greengrass tersebut, konektor dan fungsi Lambda dapat menggunakan sumber daya rahasia untuk mengautentikasi dengan layanan dan aplikasi, tanpa kata sandi hard-coding, token, atau kredensial lainnya.

Membuat dan mengelola rahasia

Dalam grup Greengrass, sumber daya rahasia mereferensi ARN dari rahasia Secrets Manager. Ketika sumber rahasia di-deploy ke core, nilai rahasia dienkripsi dan tersedia untuk konektor berafiliasi dan fungsi Lambda. Untuk informasi selengkapnya, lihat Enkripsi rahasia.

Anda menggunakan Secrets Manager untuk membuat dan mengelola versi cloud rahasia Anda. Anda menggunakan AWS IoT Greengrass untuk membuat, mengelola, dan menerapkan sumber daya rahasia Anda.

penting

Kami menyarankan agar Anda mengikuti praktik terbaik untuk memutar rahasia Anda di Secrets Manager. Kemudian, men-deploy grup Greengrass untuk memperbarui salinan lokal rahasia Anda. Untuk informasi lebih lanjut, lihat Memutar rahasia AWS Secrets Manager Anda di AWS Secrets Manager Panduan Pengguna.

Untuk membuat rahasia tersedia di inti Greengrass

  1. Buat rahasia di Secrets Manager. Ini adalah versi cloud dari rahasia Anda, yang disimpan secara terpusat dan dikelola di Secrets Manager. Tugas manajemen termasuk memutar nilai-nilai rahasia dan menerapkan kebijakan sumber daya.

  2. Buat sumber daya rahasia di AWS IoT Greengrass. Ini adalah jenis sumber daya grup yang mereferensi rahasia cloud oleh ARN. Anda dapat mereferensikan rahasia hanya sekali per grup.

  3. Konfigurasi konektor atau fungsi Lambda Anda. Anda harus mengafiliasi sumber daya dengan konektor atau fungsi dengan menentukan parameter atau properti yang sesuai. Hal ini mengizinkan mereka untuk mendapatkan nilai sumber daya rahasia yang di-deploy secara lokal. Untuk informasi lebih lanjut, lihat Menggunakan rahasia lokal di konektor dan fungsi Lambda.

  4. Men-deploy grup Greengrass. Selama deployment, AWS IoT Greengrass mengambil nilai rahasia cloud dan menciptakan (atau membarui) rahasia lokal pada core.

Secrets Manager mencatat acara di AWS CloudTrail setiap kali AWS IoT Greengrass mengambil nilai rahasia. AWS IoT Greengrass tidak mencatat acara apa pun yang terkait dengan deployment atau penggunaan rahasia lokal. Untuk informasi lebih lanjut tentang pencatatan Secrets Manager, lihat Pantau penggunaan rahasia AWS Secrets Manager Anda di AWS Secrets Manager Panduan Pengguna.

Termasuk label staging dalam sumber daya rahasia

Secrets Manager menggunakan label staging untuk mengidentifikasi versi tertentu dari nilai rahasia. Label staging dapat ditetapkan sistem atau ditetapkan pengguna. Secrets Manager menugaskan label AWSCURRENT ke versi terbaru dari nilai rahasia. Label staging umumnya digunakan untuk mengelola rotasi rahasia. Untuk informasi lebih lanjut tentang pembuatan versioning Secrets Manager, lihat Istilah dan konsep kunci untuk AWS Secrets Manager di AWS Secrets Manager Panduan Pengguna.

Sumber daya rahasia selalu menyertakan label staging AWSCURRENT ini, dan mereka secara opsional dapat menyertakan label staging lain jika mereka diperlukan oleh fungsi Lambda atau konektor. Selama deployment grup, AWS IoT Greengrass mengambil nilai-nilai label staging yang direferensikan dalam grup, dan kemudian menciptakan atau memperbarui nilai-nilai yang sesuai pada core.

Membuat dan mengelola sumber daya rahasia (konsol)

Membuat sumber daya rahasia (konsol)

Di konsol AWS IoT Greengrass tersebut, Anda membuat dan mengelola sumber daya rahasia dari tab Rahasia di halaman grup Sumber Daya ini. Untuk tutorial yang membuat sumber daya rahasia dan menambahkannya ke grup, lihat Cara membuat sumber daya rahasia (konsol) dan Memulai dengan konektor Greengrass (konsol).

Sumber daya rahasia pada tab Rahasia pada halaman Sumber Daya.
catatan

Sebagai alternatif, konsol tersebut mengizinkan Anda membuat sumber rahasia dan rahasia saat Anda mengonfigurasi konektor atau fungsi Lambda. Anda dapat melakukan hal ini dari konektor halaman Mengonfigurasi parameter atau fungsi Lambda halaman Sumber Daya ini.

Mengelola sumber daya rahasia (konsol)

Tugas manajemen untuk sumber daya rahasia dalam grup Greengrass Anda termasuk menambahkan sumber daya rahasia ke grup, menghapus sumber daya rahasia dari grup, dan mengubah aturan dari Label staging yang termasuk dalam sumber daya rahasia.

Jika Anda menunjuk ke rahasia yang berbeda dari Secrets Manager, Anda juga harus mengedit konektor yang menggunakan rahasia:

  1. Di halaman Konfigurasi grup, pilih Konektor.

  2. Dari menu kontekstual konektor, pilih Edit.

  3. Halaman Edit parameter menampilkan pesan untuk memberitahu Anda bahwa ARN rahasia berubah. Untuk mengonfirmasi perubahan, pulih Simpan.

Jika Anda menghapus rahasia di Secrets Manager, maka menghapus sumber rahasia yang sesuai dari grup dan dari konektor dan fungsi Lambda yang mereferensinya. Jika tidak, selama deployment grup, AWS IoT Greengrass mengembalikan error bahwa rahasia tidak dapat ditemukan. Juga memperbarui kode fungsi Lambda Anda sesuai kebutuhan.

Membuat dan mengelola sumber daya rahasia (CLI)

Membuat sumber daya rahasia (CLI)

Di API AWS IoT Greengrass ini, rahasia adalah jenis sumber daya grup. Contoh berikut membuat definisi sumber daya dengan versi awal yang mencakup sumber daya rahasia bernama MySecretResource. Untuk tutorial yang membuat sumber daya rahasia dan menambahkannya ke versi grup, lihat Memulai dengan konektor Greengrass (CLI).

Sumber daya rahasia mereferensi ARN dari Secrets Manager yang sesuai rahasia dan mencakup dua label staging selain AWSCURRENT, yang selalu disertakan.

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" ] } } } ] }'

Mengelola sumber daya rahasia (CLI)

Tugas manajemen untuk sumber daya rahasia dalam grup Greengrass Anda termasuk menambahkan sumber daya rahasia ke grup, menghapus sumber daya rahasia dari grup, dan mengubah aturan dari Label staging yang termasuk dalam sumber daya rahasia.

Di API AWS IoT Greengrass ini, perubahan ini dilaksanakan dengan menggunakan versi.

API AWS IoT Greengrass menggunakan versi untuk mengelola grup. Versi tidak dapat diubah, jadi untuk menambah atau mengubah komponen grup — misalnya, perangkat klien grup, fungsi, dan sumber daya — Anda harus membuat versi komponen baru atau yang diperbarui. Kemudian, Anda membuat dan men-deploy versi grup yang berisi versi target masing-masing komponen. Untuk mempelajari tentang grup, lihat AWS IoT Greengrass kelompok.

Misalnya, untuk mengubah aturan label staging untuk sumber daya rahasia:

  1. Buat versi definisi sumber daya yang berisi sumber daya rahasia diperbarui. Contoh berikut menambahkan label staging ketiga untuk sumber daya rahasia dari bagian sebelumnya.

    catatan

    Untuk menambahkan lebih banyak sumber daya dari versi, termasuk mereka di dalam array Resources ini.

    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. Jika ID dari sumber daya rahasia diubah, perbarui konektor dan fungsi yang menggunakan sumber daya rahasia. Dalam versi baru, perbarui parameter atau properti yang sesuai dengan ID sumber daya. Jika ARN rahasianya berubah, Anda juga harus memperbarui parameter yang sesuai untuk konektor yang menggunakan rahasianya.

    catatan

    ID sumber daya adalah pengenal arbitrer yang disediakan oleh pelanggan.

  3. Membuat versi grup yang berisi versi target dari setiap komponen yang ingin Anda kirim ke core.

  4. Men-deploy versi grup.

Untuk tutorial yang menunjukkan cara membuat dan men-deploy sumber daya rahasia, konektor, dan fungsi, lihat Memulai dengan konektor Greengrass (CLI).

Jika Anda menghapus rahasia di Secrets Manager, maka menghapus sumber rahasia yang sesuai dari grup dan dari konektor dan fungsi Lambda yang mereferensinya. Jika tidak, selama deployment grup, AWS IoT Greengrass mengembalikan error bahwa rahasia tidak dapat ditemukan. Juga memperbarui kode fungsi Lambda Anda sesuai kebutuhan. Anda dapat menghapus rahasia lokal dengan men-deploy versi definisi sumber daya yang tidak berisi sumber daya rahasia yang sesuai.

Menggunakan rahasia lokal di konektor dan fungsi Lambda

Konektor Greengrass dan fungsi Lambda menggunakan rahasia lokal untuk berinteraksi dengan layanan dan aplikasi. Nilai AWSCURRENT digunakan secara default, tetapi nilai-nilai lainnya dari Label staging termasuk sumber daya rahasia juga tersedia.

Konektor dan fungsi harus dikonfigurasi sebelum mereka dapat mengakses rahasia lokal. Hal ini mengafiliasi sumber daya rahasia dengan konektor atau fungsi.

Konektor

Jika konektor memerlukan akses ke rahasia lokal, maka sediakan parameter yang Anda konfigurasikan dengan informasi yang dibutuhkan untuk mengakses rahasia.

Untuk informasi tentang persyaratan bagi masing-masing konektor, lihat AWS-disediakan konektor Greengrass.

Logika untuk mengakses dan menggunakan rahasia dibangun ke dalam konektor.

Fungsi Lambda

Untuk memungkinkan fungsi Greengrass Lambda agar mengakses rahasia lokal, Anda mengonfigurasi properti fungsi.

  • Untuk mempelajari cara melakukannya di konsol AWS IoT Greengrass tersebut, lihat Cara membuat sumber daya rahasia (konsol).

  • Untuk melakukannya di bagian API AWS IoT Greengrass tersebut, Anda memberikan informasi berikut di properti ResourceAccessPolicies tersebut.

    • ResourceId: ID sumber daya rahasia dalam grup Greengrass. Ini adalah sumber daya yang mereferensi ARN dari Secrets Manager yang sesuai rahasia.

    • Permission: Jenis akses yang memiliki fungsi ke sumber daya. Hanya izin ro (hanya baca) didukung untuk sumber daya rahasia.

    Contoh berikut membuat fungsi Lambda yang dapat mengakses sumber daya rahasia MyApiKey tersebut.

    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 } } } ] }'

     

    Untuk mengakses rahasia lokal saat waktu aktif, fungsi Lambda Greengrass memanggil fungsi get_secret_value dari klien secretsmanager di AWS IoT Greengrass Core SDK (v1.3.0 atau yang lebih baru).

    Contoh berikut menunjukkan cara menggunakan AWS IoT Greengrass Core SDK for Python untuk mendapatkan rahasia. Itu melewati nama rahasia ke fungsi get_secret_value tersebut. SecretId bisa menjadi nama atau ARN dari rahasia Secrets Manager (bukan sumber daya rahasia).

    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")

    Untuk rahasia jenis teks, get_secret_value fungsi kembali ke string. Untuk rahasia jenis biner, maka mengembalikan string base64 yang dikodekan.

    penting

    Pastikan bahwa fungsi Lambda yang ditetapkan pengguna milik Anda dapat menangani rahasia dengan aman dan jangan mencatat data sensitif apa pun yang disimpan dalam rahasia. Untuk informasi lebih lanjut, lihat Mengurangi risiko Pencatatan dan Debugging fungsi Lambda Anda dalam AWS Secrets Manager Panduan Pengguna. Meskipun dokumentasi ini secara khusus mengacu pada fungsi rotasi, rekomendasi juga berlaku untuk fungsi Lambda Greengrass.

    Nilai rahasia saat ini dikembalikan ke default. Ini adalah versi di mana label staging AWSCURRENT melekat. Untuk mengakses versi yang berbeda, berikan nama label staging yang sesuai untuk argumen VersionStage yang opsional. Misalnya:

    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")

    Untuk fungsi contoh lain yang memanggil get_secret_value, lihat Buat paket deployment fungsi Lambda.