Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengotorisasi panggilan langsung ke AWS layanan menggunakan penyedia AWS IoT Core kredensyal
Perangkat dapat menggunakan sertifikat X.509 untuk terhubung AWS IoT Core menggunakan protokol otentikasi timbal balik TLS. AWS Layanan lain tidak mendukung otentikasi berbasis sertifikat, tetapi mereka dapat dipanggil menggunakan AWS kredensyal dalam format Signature Version 4.AWS Algoritma Signature Version 4 biasanya mengharuskan penelepon untuk memiliki ID kunci akses dan kunci akses rahasia. AWS IoT Core memiliki penyedia kredensyal yang memungkinkan Anda menggunakan sertifikat X.509 bawaan sebagai identitas perangkat unik untuk mengautentikasi permintaan. AWS Ini menghilangkan kebutuhan untuk menyimpan ID kunci akses dan kunci akses rahasia di perangkat Anda.
Penyedia kredensyal mengautentikasi pemanggil menggunakan sertifikat X.509 dan mengeluarkan token keamanan hak istimewa sementara yang terbatas. Token dapat digunakan untuk menandatangani dan mengotentikasi AWS permintaan apa pun. Cara mengautentikasi AWS permintaan ini mengharuskan Anda untuk membuat dan mengonfigurasi peran AWS Identity and Access Management (IAM) dan melampirkan kebijakan IAM yang sesuai ke peran tersebut sehingga penyedia kredensyal dapat mengambil peran atas nama Anda. Untuk informasi lebih lanjut tentang AWS IoT Core dan IAM, lihatIdentitas dan manajemen akses untuk AWS IoT.
AWS IoT memerlukan perangkat untuk mengirim ekstensi Server Name Indication (SNI)host_name
host_name
Bidang harus berisi titik akhir yang Anda panggil, dan itu harus:
-
Yang
endpointAddress
dikembalikan olehaws iot describe-endpoint
.--endpoint-type iot:CredentialProvider
Koneksi yang dicoba oleh perangkat tanpa host_name
nilai yang benar akan gagal.
Diagram berikut menggambarkan alur kerja penyedia kredensyal.

-
AWS IoT Core Perangkat membuat permintaan HTTPS ke penyedia kredensyal untuk token keamanan. Permintaan tersebut mencakup sertifikat perangkat X.509 untuk otentikasi.
-
Penyedia kredensyal meneruskan permintaan ke modul AWS IoT Core otentikasi dan otorisasi untuk memvalidasi sertifikat dan memverifikasi bahwa perangkat memiliki izin untuk meminta token keamanan.
-
Jika sertifikat valid dan memiliki izin untuk meminta token keamanan, modul AWS IoT Core otentikasi dan otorisasi mengembalikan keberhasilan. Jika tidak, ia mengirimkan pengecualian ke perangkat.
-
Setelah berhasil memvalidasi sertifikat, penyedia kredensyal memanggil AWS Security Token Service (AWS STS) untuk mengambil peran IAM yang Anda buat untuknya.
-
AWS STS mengembalikan token keamanan hak istimewa terbatas sementara ke penyedia kredensyal.
-
Penyedia kredensyal mengembalikan token keamanan ke perangkat.
-
Perangkat menggunakan token keamanan untuk menandatangani AWS permintaan dengan AWS Signature Version 4.
-
Layanan yang diminta memanggil IAM untuk memvalidasi tanda tangan dan mengotorisasi permintaan terhadap kebijakan akses yang dilampirkan pada peran IAM yang Anda buat untuk penyedia kredensyal.
-
Jika IAM berhasil memvalidasi tanda tangan dan mengotorisasi permintaan, permintaan berhasil. Jika tidak, IAM mengirimkan pengecualian.
Bagian berikut menjelaskan cara menggunakan sertifikat untuk mendapatkan token keamanan. Itu ditulis dengan asumsi bahwa Anda telah mendaftarkan perangkat dan membuat serta mengaktifkan sertifikat Anda sendiri untuk itu.
Cara menggunakan sertifikat untuk mendapatkan token keamanan
-
Konfigurasikan peran IAM yang diasumsikan oleh penyedia kredensyal atas nama perangkat Anda. Lampirkan kebijakan kepercayaan berikut ke peran tersebut.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "credentials.iot.amazonaws.com"}, "Action": "sts:AssumeRole" } }
Untuk setiap AWS layanan yang ingin Anda panggil, lampirkan kebijakan akses ke peran tersebut. Penyedia kredensyal mendukung variabel kebijakan berikut:
-
credentials-iot:ThingName
-
credentials-iot:ThingTypeName
-
credentials-iot:AwsCertificateId
Ketika perangkat memberikan nama benda dalam permintaannya ke AWS layanan, penyedia kredensyal menambahkan
credentials-iot:ThingName
dancredentials-iot:ThingTypeName
sebagai variabel konteks ke token keamanan. Penyedia kredensyal menyediakancredentials-iot:AwsCertificateId
sebagai variabel konteks meskipun perangkat tidak memberikan nama benda dalam permintaan. Anda meneruskan nama benda sebagai nilai header permintaanx-amzn-iot-thingname
HTTP.Ketiga variabel ini hanya berfungsi untuk kebijakan IAM, bukan AWS IoT Core kebijakan.
-
-
Pastikan bahwa pengguna yang melakukan langkah berikutnya (membuat alias peran) memiliki izin untuk meneruskan peran yang baru dibuat. AWS IoT Core Kebijakan berikut memberikan keduanya
iam:GetRole
daniam:PassRole
izin kepada AWS pengguna.iam:GetRole
Izin memungkinkan pengguna untuk mendapatkan informasi tentang peran yang baru saja Anda buat.iam:PassRole
Izin memungkinkan pengguna untuk meneruskan peran ke AWS layanan lain.{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::
your Akun AWS id
:role/your role name
" } } -
Buat alias AWS IoT Core peran. Perangkat yang akan melakukan panggilan langsung ke AWS layanan harus tahu peran ARN mana yang akan digunakan saat menghubungkan. AWS IoT Core Hard-coding peran ARN bukanlah solusi yang baik karena mengharuskan Anda untuk memperbarui perangkat setiap kali peran ARN berubah. Solusi yang lebih baik adalah dengan menggunakan
CreateRoleAlias
API untuk membuat alias peran yang menunjuk ke peran ARN. Jika peran ARN berubah, Anda cukup memperbarui alias peran. Tidak ada perubahan yang diperlukan pada perangkat. API ini mengambil parameter berikut:roleAlias
-
Wajib. String arbitrer yang mengidentifikasi alias peran. Ini berfungsi sebagai kunci utama dalam model data alias peran. Ini berisi 1-128 karakter dan harus menyertakan hanya karakter alfanumerik dan simbol =, @, dan -. Karakter alfabet huruf besar dan kecil diperbolehkan.
roleArn
-
Wajib. ARN dari peran yang dirujuk alias peran.
credentialDurationSeconds
-
Tidak wajib. Berapa lama (dalam hitungan detik) kredensialnya valid. Nilai minimum adalah 900 detik (15 menit). Nilai maksimumnya adalah 43.200 detik (12 jam). Nilai default adalah 3.600 detik (1 jam).
penting
Penyedia AWS IoT Core Kredensyal dapat mengeluarkan kredensi dengan masa pakai maksimum adalah 43.200 detik (12 jam). Memiliki kredensi yang valid hingga 12 jam dapat membantu mengurangi jumlah panggilan ke penyedia kredensi dengan menyimpan kredensi lebih lama.
credentialDurationSeconds
Nilai harus kurang dari atau sama dengan durasi sesi maksimum peran IAM yang dirujuk alias peran. Untuk informasi selengkapnya, lihat Memodifikasi durasi sesi maksimum peran (AWS API) dari Panduan Pengguna AWS Identity and Access Management.
Untuk informasi selengkapnya tentang API ini, lihat CreateRoleAlias.
-
Lampirkan kebijakan ke sertifikat perangkat. Kebijakan yang dilampirkan pada sertifikat perangkat harus memberikan izin perangkat untuk mengambil peran. Anda melakukan ini dengan memberikan izin untuk
iot:AssumeRoleWithCertificate
tindakan ke alias peran, seperti pada contoh berikut.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"iot:AssumeRoleWithCertificate", "Resource":"arn:aws:iot:your region:your_aws_account_id:rolealias/your role alias" } ] }
-
Buat permintaan HTTPS ke penyedia kredensyal untuk mendapatkan token keamanan. Berikan informasi berikut:
-
Sertifikat: Karena ini adalah permintaan HTTP melalui otentikasi timbal balik TLS, Anda harus memberikan sertifikat dan kunci pribadi kepada klien Anda saat membuat permintaan. Gunakan sertifikat dan kunci pribadi yang sama dengan yang Anda gunakan saat mendaftarkan sertifikat Anda AWS IoT Core.
Untuk memastikan perangkat Anda berkomunikasi dengan AWS IoT Core (dan bukan layanan yang menirunya), lihat Otentikasi Server, ikuti tautan untuk mengunduh sertifikat CA yang sesuai, lalu salin ke perangkat Anda.
-
RoleAlias: Nama alias peran yang Anda buat untuk penyedia kredensyal.
-
ThingName: Nama benda yang Anda buat ketika Anda mendaftarkan AWS IoT Core barang Anda. Ini diteruskan sebagai nilai header
x-amzn-iot-thingname
HTTP. Nilai ini diperlukan hanya jika Anda menggunakan atribut benda sebagai variabel kebijakan dalam AWS IoT Core atau kebijakan IAM.catatan
ThingNameYang Anda berikan
x-amzn-iot-thingname
harus cocok dengan nama sumber daya AWS IoT Thing yang ditetapkan ke sertifikat. Jika tidak cocok, kesalahan 403 dikembalikan.
Jalankan perintah berikut di AWS CLI untuk mendapatkan titik akhir penyedia kredensyal untuk Anda. Akun AWS Untuk informasi selengkapnya tentang API ini, lihat DescribeEndpoint. Untuk titik akhir yang mendukung FIPS, lihat. AWS IoT Core- titik akhir penyedia kredensi
aws iot describe-endpoint --endpoint-type iot:CredentialProvider
Objek JSON berikut adalah contoh output dari describe-endpoint perintah. Ini berisi
endpointAddress
yang Anda gunakan untuk meminta token keamanan.{ "endpointAddress": "
your_aws_account_specific_prefix
.credentials.iot.your region
.amazonaws.com" }Gunakan titik akhir untuk membuat permintaan HTTPS ke penyedia kredensyal untuk mengembalikan token keamanan. Contoh perintah berikut menggunakan
curl
, tetapi Anda dapat menggunakan klien HTTP apa pun.curl --cert
your certificate
--keyyour private key
-H "x-amzn-iot-thingname:your thing name
" --cacert AmazonRootCA1.pem https://your endpoint
/role-aliases/your role alias
/credentialsPerintah ini mengembalikan objek token keamanan yang berisi
accessKeyId
, a, asecretAccessKey
sessionToken
, dan kedaluwarsa. Objek JSON berikut adalah contoh output daricurl
perintah.{"credentials":{"accessKeyId":"
access key
","secretAccessKey":"secret access key
","sessionToken":"session token
","expiration":"2018-01-18T09:18:06Z"}}Anda kemudian dapat menggunakan
accessKeyId
,secretAccessKey
, dansessionToken
nilai untuk menandatangani permintaan ke AWS layanan. Untuk end-to-end demonstrasi, lihat Cara Menghilangkan Kebutuhan AWS Kredensyal Hard-Coded di Perangkat dengan Menggunakan posting blog Penyedia AWS IoT Kredensyal diBlog Keamanan.AWS -