Integrasi keamanan perangkat keras - AWS IoT Greengrass

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

Integrasi keamanan perangkat keras

catatan

Fitur ini tersedia untuk v2.5.3 dan versi yang lebih baruKomponen inti Greengrass.AWS IoT Greengrasssaat ini tidak mendukung fitur ini pada perangkat inti Windows.

Anda dapat mengonfigurasiAWS IoT GreengrassPerangkat lunak inti untuk menggunakan modul keamanan perangkat keras (HSM) melaluiAntarmuka PKCS #11. Fitur ini memungkinkan Anda menyimpan kunci pribadi dan sertifikat perangkat dengan aman sehingga tidak terekspos atau diduplikasi dalam perangkat lunak. Anda dapat menyimpan kunci pribadi dan sertifikat pada modul perangkat keras seperti HSM atau Trusted Platform Module (TPM).

ParameterAWS IoT GreengrassPerangkat lunak inti menggunakan kunci privat dan sertifikat X.509 untuk mengotentikasi koneksi keAWS IoTdanAWS IoT Greengrasslayanan. Parameterkomponen manajer rahasiamenggunakan kunci pribadi ini untuk mengenkripsi dan mendekripsi rahasia yang Anda sebarkan ke perangkat inti Greengrass dengan aman. Ketika Anda mengkonfigurasi perangkat inti untuk menggunakan HSM, komponen ini menggunakan kunci pribadi dan sertifikat yang Anda simpan di HSM.

ParameterKomponen broker MQTTjuga menyimpan kunci pribadi untuk sertifikat server MQTT lokalnya. Komponen ini menyimpan kunci pribadi pada sistem file perangkat di folder kerja komponen. Saat ini,AWS IoT Greengrasstidak mendukung menyimpan kunci pribadi atau sertifikat ini dalam HSM.

Tip

Cari perangkat yang mendukung fitur ini diAWSKatalog Perangkat Mitra.

Persyaratan

Anda harus memenuhi persyaratan berikut untuk menggunakan HSM pada perangkat inti Greengrass:

  • Inti Greengrassv2.5.3 atau yang lebih baru diinstal pada perangkat inti. Anda dapat memilih versi yang kompatibel ketika Anda menginstalAWS IoT GreengrassPerangkat lunak inti pada perangkat inti.

  • ParameterKomponen penyedia PKCS #11diinstal pada perangkat inti. Anda dapat mengunduh dan menginstal komponen ini ketika Anda menginstalAWS IoT GreengrassPerangkat lunak inti pada perangkat inti.

  • Modul keamanan perangkat keras yang mendukungPKCS #1skema tanda tangan dan kunci RSA dengan kunci RSA-2048 (atau lebih besar) atau kunci ECC.

    catatan

    Untuk menggunakan modul keamanan perangkat keras dengan kunci ECC, Anda harus menggunakanInti Greengrassv2.5.6 atau yang lebih baru.

    Untuk menggunakan modul keamanan perangkat keras danmanajer rahasia, Anda harus menggunakan modul keamanan perangkat keras dengan kunci RSA.

  • Perpustakaan penyedia PKCS #11 yangAWS IoT GreengrassPerangkat lunak inti dapat memuat saat runtime (menggunakan libdl) untuk memanggil fungsi PKCS #11. Pustaka penyedia PKCS #11 harus menerapkan operasi PKCS #11 API berikut:

    • C_Initialize

    • C_Finalize

    • C_GetSlotList

    • C_GetSlotInfo

    • C_GetTokenInfo

    • C_OpenSession

    • C_GetSessionInfo

    • C_CloseSession

    • C_Login

    • C_Logout

    • C_GetAttributeValue

    • C_FindObjectsInit

    • C_FindObjects

    • C_FindObjectsFinal

    • C_DecryptInit

    • C_Decrypt

    • C_DecryptUpdate

    • C_DecryptFinal

    • C_SignInit

    • C_Sign

    • C_SignUpdate

    • C_SignFinal

    • C_GetMechanismList

    • C_GetMechanismInfo

    • C_GetInfo

    • C_GetFunctionList

  • Modul perangkat keras harus dapat diatasi dengan label slot, sebagaimana ditentukan di dalam spesifikasi PKCS#11.

  • Anda harus menyimpan kunci pribadi dan sertifikat di HSM di slot yang sama, dan mereka harus menggunakan label objek dan ID objek yang sama, jika HSM mendukung ID objek.

  • Kunci sertifikat dan privat harus dapat diatasi dengan label objek.

  • Kunci privat harus memiliki izin berikut:

    • sign

    • decrypt

  • (Opsional) Untuk menggunakankomponen manajer rahasia, Anda harus menggunakan versi 2.1.0 atau yang lebih baru, dan kunci pribadi harus memiliki izin berikut:

    • unwrap

    • wrap

Praktik terbaik keamanan perangkat keras

Pertimbangkan praktik terbaik berikut saat Anda mengonfigurasi keamanan perangkat keras di perangkat inti Greengrass.

  • Hasilkan kunci privat langsung pada HSM dengan menggunakan generator nomor acak perangkat keras internal. Pendekatan ini lebih aman daripada mengimpor kunci pribadi yang Anda hasilkan di tempat lain, karena private key tetap berada dalam HSM.

  • Konfigurasi kunci pribadi agar tidak dapat diubah dan melarang ekspor.

  • Gunakan alat penyediaan yang direkomendasikan oleh vendor perangkat keras HSM untuk menghasilkan sertifikat permintaan penandatanganan (CSR) menggunakan kunci privat yang dilindungi perangkat keras, lalu gunakanAWS IoTkonsol atau API untuk menghasilkan sertifikat klien.

catatan

Praktik terbaik keamanan untuk memutar kunci tidak berlaku saat Anda menghasilkan kunci privat pada HSM.

MenginstalAWS IoT GreengrassPerangkat lunak inti dengan keamanan perangkat keras

Ketika Anda menginstalAWS IoT GreengrassPerangkat lunak inti, Anda dapat mengkonfigurasinya untuk menggunakan kunci privat yang Anda hasilkan dalam HSM. Pendekatan ini mengikutipraktik keamanan terbaikuntuk menghasilkan kunci pribadi di HSM, sehingga kunci pribadi tetap dalam HSM.

Untuk memasangAWS IoT GreengrassPerangkat lunak inti dengan keamanan perangkat keras, Anda melakukan hal berikut:

  1. Hasilkan kunci pribadi di HSM.

  2. Buat permintaan penandatanganan sertifikat (CSR) dari kunci privat.

  3. Buat sertifikat dari CSR. Anda dapat membuat sertifikat yang ditandatangani olehAWS IoTatau otoritas sertifikat akar lainnya (CA). Untuk informasi selengkapnya tentang cara menggunakan CA akar lainnya, lihatBuat sertifikat klien Anda sendiridiAWS IoT CorePanduan Pengembang.

  4. MengunduhAWS IoTsertifikat dan impor ke HSM.

  5. MenginstalAWS IoT GreengrassPerangkat lunak inti dari file konfigurasi yang menetapkan untuk menggunakan komponen penyedia PKCS #11 dan kunci pribadi dan sertifikat di HSM.

Anda dapat memilih salah satu opsi instalasi berikut untuk menginstalAWS IoT GreengrassPerangkat lunak inti dengan keamanan perangkat keras:

Saat ini,AWS IoT Greengrasstidak mendukung menginstalAWS IoT GreengrassPerangkat lunak inti dengan keamanan perangkat keras saat Andainstal dengan penyediaan sumber daya otomatisatauAWS IoTPenyediaan armada.

Mengkonfigurasi keamanan perangkat keras pada perangkat inti yang ada

Anda dapat mengimpor kunci pribadi dan sertifikat perangkat inti ke HSM untuk mengkonfigurasi keamanan perangkat keras.

Pertimbangan-pertimbangan
  • Anda harus memiliki akses root ke sistem file perangkat inti.

  • Dalam prosedur ini, Anda menutupAWS IoT GreengrassPerangkat lunak inti, sehingga perangkat inti offline dan tidak tersedia saat Anda mengkonfigurasi keamanan perangkat keras.

Untuk mengonfigurasi keamanan perangkat keras pada perangkat inti yang ada, Anda melakukan hal berikut:

  1. Inisialisasi HSM.

  2. DeployKomponen penyedia PKCS #11ke perangkat inti.

  3. HentikanAWS IoT GreengrassPerangkat lunak inti.

  4. Impor kunci pribadi dan sertifikat perangkat inti ke HSM.

  5. PerbaruiAWS IoT GreengrassFile konfigurasi perangkat lunak inti untuk menggunakan kunci pribadi dan sertifikat di HSM.

  6. MemulaiAWS IoT GreengrassPerangkat lunak inti.

Langkah 1: Menginisialisasi modul keamanan perangkat keras

Selesaikan langkah berikut untuk menginisialisasi HSM pada perangkat inti Anda.

Menginisialisasi modul keamanan perangkat keras

  • Inisialisasi token PKCS #11 di HSM, dan simpan ID slot dan PIN pengguna yang untuk token. Periksa dokumentasi untuk HSM Anda untuk mempelajari cara menginisialisasi token. Anda menggunakan ID slot dan PIN pengguna nanti ketika Anda menerapkan dan mengkonfigurasi komponen penyedia PKCS #11.

Langkah 2: Menyebarkan komponen penyedia PKCS #11

Selesaikan langkah-langkah berikut untuk men-deploy dan mengkonfigurasiKomponen penyedia PKCS #11. Anda dapat men-deploy komponen ke satu atau beberapa perangkat inti.

  1. Pada menu navigasi konsol AWS IoT Greengrass tersebut, pilih Komponen.

  2. PadaKomponenhalaman, pilihKomponen publiktab, dan kemudian pilihaws.greengrass.crypto.Pkcs11Provider.

  3. Pada halaman aws.greengrass.crypto.Pkcs11Provider pilih Deploy.

  4. FromTambahkan ke deployment, pilih penyebaran yang ada untuk merevisi, atau memilih untuk membuat penyebaran baru, dan kemudian pilihSelanjutnya.

  5. Jika Anda memilih untuk membuat deployment baru, pilih perangkat inti target atau grup hal untuk penyebaran. PadaTentukan targethalaman, di bawahTarget penyebaran, memilih perangkat inti atau kelompok hal, dan kemudian memilihSelanjutnya.

  6. PadaKomponen pilihhalaman, di bawahKomponen publik, pilihaws.greengrass.crypto.Pkcs11Provider, dan kemudian pilihSelanjutnya.

  7. PadaMengonfigurasi komponenhalaman, pilihaws.greengrass.crypto.Pkcs11Provider, dan kemudian lakukan hal berikut:

    1. Pilih Konfigurasi komponen.

    2. DiKonfigurasiaws.greengrass.crypto.Pkcs11Providermodal, di bawahPembaruan konfigurasi, diKonfigurasi untuk digabungkan, masukkan pembaruan konfigurasi berikut. Perbarui parameter konfigurasi berikut dengan nilai untuk perangkat inti target. Tentukan ID slot dan PIN pengguna tempat Anda menginisialisasi token PKCS #11 sebelumnya. Anda mengimpor kunci pribadi dan sertifikat ke dalam slot ini di HSM nanti.

      name

      Sebuah nama untuk konfigurasi PKCS #11.

      library

      Jalur file absolut ke pustaka implementasi PKCS #11 bahwaAWS IoT GreengrassPerangkat lunak inti dapat memuat dengan libdl.

      slot

      ID slot yang berisi kunci pribadi dan sertifikat perangkat. Nilai ini berbeda dari indeks slot atau label Slot.

      userPin

      PIN pengguna yang digunakan untuk mengakses slot.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. PilihKonfirmasikanuntuk menutup modal, dan kemudian memilihSelanjutnya.

  8. Pada halaman Konfigurasikan pengaturan lanjutan, simpan pengaturan konfigurasi default tersebut, dan pilih Selanjutnya.

  9. Di halaman Tinjau, pilih Deploy.

    Penyebaran dapat memakan waktu hingga satu menit untuk menyelesaikannya.

Untuk menyebarkan komponen penyedia PKCS #11, buat dokumen penyebaran yang menyertakanaws.greengrass.crypto.Pkcs11Providerdicomponentsobjek, dan menentukan update konfigurasi untuk komponen. Ikuti petunjukBuat deploymentuntuk membuat deployment baru atau merevisi deployment yang ada.

Contoh berikut dokumen penyebaran partial menentukan untuk menyebarkan dan mengkonfigurasi komponen penyedia PKCS #11. Perbarui parameter konfigurasi berikut dengan nilai untuk perangkat inti target. Simpan ID slot dan PIN pengguna untuk digunakan nanti saat Anda mengimpor kunci pribadi dan sertifikat ke HSM.

name

Sebuah nama untuk konfigurasi PKCS #11.

library

Jalur file absolut ke pustaka implementasi PKCS #11 bahwaAWS IoT GreengrassPerangkat lunak inti dapat memuat dengan libdl.

slot

ID slot yang berisi kunci pribadi dan sertifikat perangkat. Nilai ini berbeda dari indeks slot atau label Slot.

userPin

PIN pengguna yang digunakan untuk mengakses slot.

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

Deployment ini dapat memakan waktu beberapa menit hingga selesai. Anda dapat menggunakanAWS IoT Greengrasslayanan untuk memeriksa status deployment. Anda dapat memeriksaAWS IoT GreengrassLog perangkat lunak inti untuk memverifikasi bahwa komponen penyedia PKCS #11 berhasil diterapkan. Untuk informasi selengkapnya, lihat yang berikut:

Jika penyebaran gagal, Anda dapat memecahkan masalah penyebaran pada setiap perangkat inti. Untuk informasi selengkapnya, lihat Pemecahan Masalah AWS IoT Greengrass V2.

Langkah 3: Memperbarui konfigurasi pada perangkat inti

ParameterAWS IoT GreengrassPerangkat lunak inti menggunakan file konfigurasi yang menentukan bagaimana perangkat beroperasi. File konfigurasi ini mencakup tempat menemukan kunci pribadi dan sertifikat yang digunakan perangkat untuk terhubung keAWS Cloud. Menyelesaikan langkah-langkah berikut untuk mengimpor kunci pribadi perangkat inti dan sertifikat ke HSM dan memperbarui file konfigurasi untuk menggunakan HSM.

Untuk memperbarui konfigurasi pada perangkat inti untuk menggunakan keamanan perangkat keras

  1. HentikanAWS IoT GreengrassPerangkat lunak inti. Jika AndamengonfigurasiAWS IoT GreengrassPerangkat lunak inti sebagai layanan sistemdengan systemd, Anda dapat menjalankan perintah berikut untuk menghentikan perangkat lunak.

    sudo systemctl stop greengrass.service
  2. Temukan file kunci pribadi dan sertifikat perangkat inti.

    • Jika Anda menginstalAWS IoT GreengrassPerangkat lunak inti denganpenyediaan otomatisatauPenyediaan armada, kunci privat ada di/greengrass/v2/privKey.key, dan sertifikat ada di/greengrass/v2/thingCert.crt.

    • Jika Anda menginstalAWS IoT GreengrassPerangkat lunak inti denganpenyediaan manual, kunci privat ada di/greengrass/v2/private.pem.keysecara default, dan sertifikat ada di/greengrass/v2/device.pem.crtsecara default.

    Anda juga dapat memeriksasystem.privateKeyPathdansystem.certificateFilePathproperties di/greengrass/v2/config/effectiveConfig.yamluntuk menemukan lokasi file-file ini.

  3. Impor kunci pribadi dan sertifikat ke HSM. Periksa dokumentasi untuk HSM Anda untuk mempelajari cara mengimpor kunci pribadi dan sertifikat ke dalamnya. Impor kunci pribadi dan sertifikat menggunakan ID slot dan PIN pengguna tempat Anda menginisialisasi token PKCS #11 sebelumnya. Anda harus menggunakan label objek dan ID objek yang sama untuk kunci pribadi dan sertifikat. Simpan label objek yang Anda tentukan saat Anda mengimpor setiap file. Anda menggunakan label ini nanti ketika Anda memperbaruiAWS IoT GreengrassKonfigurasi perangkat lunak inti untuk menggunakan kunci pribadi dan sertifikat di HSM.

  4. PerbaruiAWS IoT GreengrassKonfigurasi inti untuk menggunakan kunci pribadi dan sertifikat di HSM. Untuk memperbarui konfigurasi, Anda memodifikasiAWS IoT GreengrassFile konfigurasi inti dan jalankanAWS IoT GreengrassPerangkat lunak inti dengan file konfigurasi yang diperbarui untuk menerapkan konfigurasi baru.

    Lakukan hal berikut:

    1. Buat cadanganAWS IoT GreengrassFile konfigurasi inti. Anda dapat menggunakan cadangan ini untuk memulihkan perangkat inti jika mengalami masalah saat mengonfigurasi keamanan perangkat keras.

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. BukaAWS IoT GreengrassFile konfigurasi inti dalam editor teks. Misalnya, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk mengedit file. Ganti/greengrass/v2dengan path ke folder akar Greengrass.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Mengganti nilaisystem.privateKeyPathdengan URI PKCS #11 untuk kunci pribadi di HSM. Gantiiotdevicekeydengan label objek tempat Anda mengimpor kunci pribadi dan sertifikat sebelumnya.

      pkcs11:object=iotdevicekey;type=private
    4. Mengganti nilaisystem.certificateFilePathdengan URI PKCS #11 untuk sertifikat di HSM. Gantiiotdevicekeydengan label objek tempat Anda mengimpor kunci pribadi dan sertifikat sebelumnya.

      pkcs11:object=iotdevicekey;type=cert

    Setelah Anda menyelesaikan langkah-langkah ini,systemproperti diAWS IoT GreengrassFile konfigurasi inti akan terlihat seperti contoh berikut.

    system: certificateFilePath: "pkcs11:object=iotdevicekey;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey;type=private" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore"
  5. Terapkan konfigurasi di updateeffectiveConfig.yamlberkas. JalankanGreengrass.jardengan--init-configparameter untuk menerapkan konfigurasi dieffectiveConfig.yaml. Ganti/greengrass/v2dengan path ke folder akar Greengrass.

    sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
  6. MemulaiAWS IoT GreengrassPerangkat lunak inti. Jika AndamengonfigurasiAWS IoT GreengrassPerangkat lunak inti sebagai layanan sistemdengan systemd, Anda dapat menjalankan perintah berikut untuk memulai perangkat lunak.

    sudo systemctl start greengrass.service

    Untuk informasi selengkapnya, lihat Jalankan perangkat lunak inti AWS IoT Greengrass.

  7. MemeriksaAWS IoT GreengrassLog perangkat lunak inti untuk memverifikasi bahwa perangkat lunak dimulai dan terhubung keAWS Cloud. ParameterAWS IoT GreengrassPerangkat lunak inti menggunakan kunci pribadi dan sertifikat untuk terhubung keAWS IoTdanAWS IoT Greengrasslayanan.

    sudo tail -f /greengrass/v2/logs/greengrass.log

    Pesan log Info-level berikut menunjukkan bahwaAWS IoT GreengrassPerangkat lunak inti berhasil terhubung keAWS IoTdanAWS IoT Greengrasslayanan.

    2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
  8. (Opsional) Setelah Anda memverifikasi bahwaAWS IoT GreengrassPerangkat lunak inti bekerja dengan kunci pribadi dan sertifikat di HSM, menghapus kunci pribadi dan file sertifikat dari sistem file perangkat. Jalankan perintah berikut, dan ganti jalur file dengan jalur ke kunci pribadi dan file sertifikat.

    sudo rm /greengrass/v2/privKey.key sudo rm /greengrass/v2/thingCert.crt

Gunakan perangkat keras tanpa dukungan PKCS #11

Perpustakaan PKCS #11 biasanya disediakan oleh vendor perangkat keras atau open source. Sebagai contoh, dengan perangkat keras yang sesuai standar (seperti TPM1.2), dimungkinkan untuk menggunakan perangkat lunak sumber terbuka yang ada. Namun, jika perangkat keras Anda tidak memiliki implementasi perpustakaan PKCS #11 yang sesuai, atau jika Anda ingin menulis penyedia PKCS #11 kustom, hubungi perwakilan Support Korporasi Amazon Web Services dengan pertanyaan terkait integrasi.

Lihat juga