View a markdown version of this page

General/Custom Persyaratan otorisasi untuk pengembang konektor - Integrasi Terkelola untuk AWS IoT Device Management

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

General/Custom Persyaratan otorisasi untuk pengembang konektor

Otorisasi Umum memungkinkan konektor Anda menggunakan kredensil (seperti kunci API, token, atau username/password kombinasi) alih-alih token pengguna OAuth 2.0. Tidak seperti OAuth 2.0, yang menyediakan otorisasi tingkat pengguna melalui penautan akun, Otorisasi Umum memungkinkan satu set kredensional untuk mengontrol perangkat di beberapa pengguna akhir.

catatan

Sepanjang dokumentasi ini, Otorisasi Kustom disebut sebagai Otorisasi Umum. Kedua istilah tersebut menggambarkan mekanisme otorisasi yang sama. Pada bagian berikut, kami menggunakan “Otorisasi Umum” untuk konsistensi.

Bagian ini menjelaskan cara menerapkan dukungan Otorisasi Umum dalam AWS Lambda fungsi konektor Anda. Jika Anda adalah pelanggan yang mengonfigurasi Otorisasi Umum untuk konektor yang ada, lihat. General/Custom Persyaratan otorisasi

Apa itu Otorisasi Umum?

Otorisasi Umum adalah mekanisme otorisasi non-OAuth yang memungkinkan konektor Anda untuk mengotorisasi dengan platform pihak ketiga menggunakan kredensi pelanggan. Dengan Otorisasi Umum, Integrasi Terkelola mendelegasikan manajemen kredensi ke konektor Anda, dan satu set kredensional dapat mengontrol perangkat di beberapa pengguna akhir.

Ini berguna untuk skenario di mana Anda memiliki hubungan bisnis dengan vendor perangkat dan perlu mengelola perangkat dalam skala besar tanpa alur otorisasi pengguna individual.

Kapan menggunakan Otorisasi Umum

Pertimbangkan untuk menerapkan dukungan Otorisasi Umum di konektor Anda saat:

  • Platform pihak ketiga tidak mendukung OAuth 2.0

  • Platform pihak ketiga menyediakan materi otorisasi khusus seperti kunci API atau kredensil yang dapat berada di AWS Secrets Manager

  • Anda perlu mengelola perangkat dalam skala besar tanpa alur otorisasi pengguna individual

catatan

Konektor Anda dapat mengimplementasikan kedua jenis otorisasi secara paralel, memberikan kompatibilitas dengan kerangka kerja otorisasi yang beragam.

Bagaimana Otorisasi Umum menggunakan AWS Secrets Manager

AWS Secrets Manager adalah layanan penyimpanan rahasia yang melindungi kredensil sensitif seperti kunci API dan token. Rahasia dienkripsi menggunakan AWS Key Management Service kunci. Untuk informasi selengkapnya, silakan lihat Panduan Pengguna AWS Secrets Manager.

Untuk Otorisasi Umum, pelanggan menyimpan kredensil otorisasi di Secrets Manager, dan memberikan izin konektor C2C Anda untuk mengakses rahasia ini. Ketika integrasi terkelola memanggil konektor Anda, ia menyediakan Secrets Manager ARN dan ID versi di header permintaan. Konektor Anda mengambil nilai rahasia dan menggunakannya untuk mengotorisasi dengan platform pihak ketiga.

Pendekatan ini memastikan bahwa integrasi terkelola tidak pernah menangani kredensil jangka panjang secara langsung. Konektor Anda mempertahankan kontrol penuh atas manajemen kredensi dan pembuatan token, sehingga solusi ini dapat diperluas ke mekanisme otorisasi apa pun yang didukung oleh platform pihak ketiga Anda.

penting

Integrasi Terkelola tidak mengakses atau mengelola kredensil yang disimpan di pelanggan. AWS Secrets Manager Konektor Anda memiliki kontrol penuh atas pengambilan kredenal, penguraian, dan penggunaan.

penting

Kami menyarankan Anda untuk tidak mencatat kredensi atau token sensitif di log apa pun. Namun, jika disimpan dalam log, kami sarankan Anda menggunakan kebijakan perlindungan data CloudWatch Log untuk menutupi token di log. Untuk informasi selengkapnya, lihat Membantu melindungi data log sensitif dengan masking.

Format permintaan Otorisasi Umum

Saat Integrasi Terkelola memanggil konektor Anda untuk asosiasi akun Otorisasi Umum, header permintaan berisi AWS Secrets Manager referensi, bukan token OAuth. Struktur permintaan konsisten di semua operasi konektor (AWS.ActivateUser,AWS.DiscoverDevices,AWS.SendCommand, danAWS.DeactivateUser).

contoh Contoh: Permintaan Otorisasi Umum
{ "header": { "auth": { "secretsManager": { "arn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-key-AbCdEf", "versionId": "a1b2c3d4-5678-90ab-cdef-1234567890ab" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", ... } }
contoh Contoh: Permintaan OAuth 2.0 (untuk perbandingan)
{ "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", ... } }
catatan

Konektor Anda harus menangani kedua format permintaan. Periksa auth.type bidang untuk menentukan metode otorisasi mana yang akan digunakan untuk setiap permintaan.

Alur kerja Otorisasi Umum

Saat konektor Anda menerima permintaan Otorisasi Umum, ikuti alur kerja ini:

  • Periksa jenis otorisasi - Periksa auth.type bidang di header permintaan untuk menentukan apakah permintaan menggunakan Otorisasi Umum

  • Ekstrak referensi Secrets Manager - Ekstrak AWS Secrets Manager ARN dan ID versi dari objek auth.secretsManager

  • Ambil rahasia - Panggil AWS Secrets Manager GetSecretValue API menggunakan ARN dan ID versi yang disediakan

  • Parse credentials - Parse nilai rahasia untuk mengekstrak kredensi otorisasi (formatnya tergantung pada persyaratan platform pihak ketiga Anda)

  • Hasilkan token (jika diperlukan) - Jika diperlukan, gunakan kredensialnya untuk menghasilkan token akses atau lakukan langkah otorisasi tambahan yang diperlukan oleh platform pihak ketiga

  • Otorisasi panggilan API - Gunakan kredensi atau token yang dihasilkan untuk mengotorisasi panggilan API ke platform pihak ketiga

  • Operasi proses - Memproses operasi konektor (AWS.DiscoverDevicesAWS.SendCommand,, dll.) Menggunakan koneksi resmi

catatan

Konektor Anda bertanggung jawab atas semua manajemen kredensi, termasuk pembuatan token, penyegaran, dan penanganan kesalahan. Integrasi Terkelola hanya memberikan referensi ke rahasia; itu tidak mengelola kredensialnya sendiri.

Izin Lambda untuk GeneralAuthorization

Peran eksekusi Lambda konektor Anda harus memiliki izin untuk mengambil rahasia dari pelanggan. AWS Secrets Manager Tambahkan izin berikut ke kebijakan peran eksekusi Lambda Anda:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.*.amazonaws.com" } } } ] }

Penjelasan Izin

  • secretsmanager:GetSecretValue- Memungkinkan Lambda Anda untuk mengambil nilai-nilai rahasia

  • kms:Decrypt- Diperlukan karena rahasia dienkripsi menggunakan kunci AWS Key Management Service

catatan

Kebijakan contoh memungkinkan akses ke rahasia apa pun. Dalam produksi, Anda harus membatasi Resource bidang hanya pada rahasia yang dibutuhkan konektor Anda. Namun, karena pelanggan membuat rahasia mereka sendiri, Anda mungkin perlu menggunakan wildcard atau mendokumentasikan konvensi penamaan yang harus diikuti pelanggan.

Pelanggan juga akan memberikan izin Lambda Anda untuk mengakses rahasia spesifik mereka melalui kebijakan sumber daya rahasia.