Mengotorisasi pengguna dan layanan cloud untuk menggunakan AWS IoT Jobs - AWS IoT Core

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

Mengotorisasi pengguna dan layanan cloud untuk menggunakan AWS IoT Jobs

Untuk mengotorisasi pengguna dan layanan cloud Anda, Anda harus menggunakan kebijakan IAM pada bidang kontrol dan bidang data. Kebijakan harus digunakan dengan protokol HTTPS dan harus menggunakan otentikasi AWS Signature Version 4 (port 443) untuk mengautentikasi pengguna.

catatan

AWS IoT Core Kebijakan tidak boleh digunakan pada pesawat kontrol. Hanya kebijakan IAM yang digunakan untuk mengotorisasi pengguna atau Layanan Cloud. Untuk informasi selengkapnya tentang menggunakan jenis kebijakan yang diperlukan, lihatJenis kebijakan yang diperlukan untuk AWS IoT Pekerjaan.

Kebijakan IAM adalah dokumen JSON yang berisi pernyataan kebijakan. Pernyataan kebijakan menggunakan elemen Efek, Tindakan, dan Sumber Daya untuk menentukan sumber daya, tindakan yang diizinkan atau ditolak, dan kondisi di mana tindakan diizinkan atau ditolak. Untuk informasi selengkapnya, lihat Referensi Elemen Kebijakan IAM JSON di Panduan pengguna IAM.

Awas

Kami menyarankan agar Anda tidak menggunakan izin wildcard, seperti "Action": ["iot:*"] dalam kebijakan atau kebijakan IAM Anda. AWS IoT Core Menggunakan izin wildcard bukanlah praktik terbaik keamanan yang disarankan. Untuk informasi selengkapnya, lihat AWS IoT kebijakan yang terlalu permisif.

Kebijakan IAM di bidang kontrol

Pada bidang kontrol, kebijakan IAM menggunakan iot: awalan dengan tindakan untuk mengotorisasi operasi API pekerjaan terkait. Misalnya, tindakan iot:CreateJob kebijakan memberikan izin kepada pengguna untuk menggunakan CreateJobAPI.

Tabel berikut menunjukkan daftar tindakan kebijakan IAM dan izin untuk menggunakan tindakan API. Untuk informasi tentang jenis sumber daya, lihat Jenis sumber daya yang ditentukan oleh AWS IoT. Untuk informasi selengkapnya tentang AWS IoT tindakan, lihat Tindakan yang ditentukan oleh AWS IoT.

Tindakan kebijakan IAM pada control plane
Tindakan kebijakan Operasi API Jenis sumber daya Deskripsi
iot:AssociateTargetsWithJob AssociateTargetsWithJob
  • pekerjaan

  • hal

  • thinggroup

Merupakan izin untuk mengasosiasikan grup dengan pekerjaan berkelanjutan. iot:AssociateTargetsWithJobIzin diperiksa setiap kali permintaan dibuat untuk mengaitkan target.
iot:CancelJob CancelJob pekerjaan Merupakan izin untuk membatalkan pekerjaan. iot:CancelJobIzin diperiksa setiap kali permintaan dibuat untuk membatalkan pekerjaan.
iot:CancelJobExecution CancelJobExecution
  • pekerjaan

  • hal

Merupakan izin untuk membatalkan eksekusi pekerjaan. iot: CancelJobExecutionIzin diperiksa setiap kali permintaan dibuat untuk membatalkan eksekusi pekerjaan.
iot:CreateJob CreateJob
  • pekerjaan

  • hal

  • thinggroup

  • Jobtemplate

  • package

Merupakan izin untuk membuat pekerjaan. iot: CreateJobIzin diperiksa setiap kali permintaan dibuat untuk membuat pekerjaan.
iot:CreateJobTemplate CreateJobTemplate
  • pekerjaan

  • Jobtemplate

  • package

Merupakan izin untuk membuat template pekerjaan. iot: CreateJobTemplateIzin diperiksa setiap kali permintaan dibuat untuk membuat template pekerjaan.
iot:DeleteJob DeleteJob pekerjaan Merupakan izin untuk menghapus pekerjaan. iot: DeleteJobIzin diperiksa setiap kali permintaan dibuat untuk menghapus pekerjaan.
iot:DeleteJobTemplate DeleteJobTemplate Jobtemplate Merupakan izin untuk menghapus template pekerjaan. iot: CreateJobTemplateIzin diperiksa setiap kali permintaan dibuat untuk menghapus template pekerjaan.
iot:DeleteJobExecution DeleteJobTemplate
  • pekerjaan

  • hal

Merupakan izin untuk menghapus eksekusi pekerjaan. iot: DeleteJobExecutionIzin diperiksa setiap kali permintaan dibuat untuk menghapus eksekusi pekerjaan.
iot:DescribeJob DescribeJob pekerjaan Merupakan izin untuk menggambarkan pekerjaan. iot: DescribeJobIzin diperiksa setiap kali permintaan dibuat untuk menggambarkan suatu pekerjaan.
iot:DescribeJobExecution DescribeJobExecution
  • pekerjaan

  • hal

Merupakan izin untuk menggambarkan eksekusi pekerjaan. iot: DescribeJobExecutionIzin diperiksa setiap kali permintaan dibuat untuk menggambarkan eksekusi pekerjaan.
iot:DescribeJobTemplate DescribeJobTemplate Jobtemplate Merupakan izin untuk menggambarkan template pekerjaan. iot: DescribeJobTemplateIzin diperiksa setiap kali permintaan dibuat untuk menggambarkan template pekerjaan.
iot:DescribeManagedJobTemplate DescribeManagedJobTemplate Jobtemplate Merupakan izin untuk mendeskripsikan template pekerjaan terkelola. iot: DescribeManagedJobTemplateIzin diperiksa setiap kali permintaan dibuat untuk menggambarkan template pekerjaan yang dikelola.
iot:GetJobDocument GetJobDocument pekerjaan Merupakan izin untuk mendapatkan dokumen pekerjaan untuk suatu pekerjaan. iot:GetJobDocumentIzin diperiksa setiap kali permintaan dibuat untuk mendapatkan dokumen pekerjaan.
iot:ListJobExecutionsForJob ListJobExecutionsForJob pekerjaan Merupakan izin untuk membuat daftar eksekusi pekerjaan untuk suatu pekerjaan. iot:ListJobExecutionsForJobIzin diperiksa setiap kali permintaan dibuat untuk mencantumkan eksekusi pekerjaan untuk suatu pekerjaan.
iot:ListJobExecutionsForThing ListJobExecutionsForThing hal Merupakan izin untuk membuat daftar eksekusi pekerjaan untuk suatu pekerjaan. iot:ListJobExecutionsForThingIzin diperiksa setiap kali permintaan dibuat untuk mencantumkan eksekusi pekerjaan untuk suatu hal.
iot:ListJobs ListJobs none Merupakan izin untuk membuat daftar pekerjaan. iot:ListJobsIzin diperiksa setiap kali permintaan dibuat untuk membuat daftar pekerjaan.
iot:ListJobTemplates ListJobTemplates none Merupakan izin untuk membuat daftar template pekerjaan. iot:ListJobTemplatesIzin diperiksa setiap kali permintaan dibuat untuk membuat daftar templat pekerjaan.
iot:ListManagedJobTemplates ListManagedJobTemplates none Merupakan izin untuk membuat daftar templat pekerjaan yang dikelola. iot:ListManagedJobTemplatesIzin diperiksa setiap kali permintaan dibuat untuk mencantumkan templat pekerjaan yang dikelola.
iot:UpdateJob UpdateJob pekerjaan Merupakan izin untuk memperbarui pekerjaan. iot:UpdateJobIzin diperiksa setiap kali permintaan dibuat untuk memperbarui pekerjaan.
iot:TagResource TagResource
  • pekerjaan

  • Jobtemplate

  • hal

Memberikan izin untuk menandai sumber daya tertentu.
iot:UntagResource UntagResource
  • pekerjaan

  • Jobtemplate

  • hal

Memberikan izin untuk menghapus tag sumber daya tertentu.

Contoh berikut menunjukkan kebijakan IAM yang memungkinkan izin pengguna untuk melakukan tindakan berikut untuk hal IoT Anda dan grup benda.

Dalam contoh, ganti:

  • regiondengan Anda Wilayah AWS, sepertius-east-1.

  • account-iddengan Akun AWS nomor Anda, seperti57EXAMPLE833.

  • thing-group-namedengan nama grup IoT Anda yang Anda targetkan pekerjaan, seperti. FirmwareUpdateGroup

  • thing-namedengan nama hal IoT Anda yang Anda targetkan pekerjaan, seperti. MyIoTThing

JSON
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:CreateJobTemplate", "iot:CreateJob" ], "Effect": "Allow", "Resource": "arn:aws:iot:us-east-1:123456789012:thinggroup/thing-group-name" }, { "Action": [ "iot:DescribeJob", "iot:CancelJob", "iot:DeleteJob" ], "Effect": "Allow", "Resource": "arn:aws:iot:us-east-1:123456789012:job/*" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:us-east-1:123456789012:thing/thing-name", "arn:aws:iot:us-east-1:123456789012:job/*" ] } ] }

Anda dapat membatasi prinsipal agar tidak melakukan panggilan API ke titik akhir bidang kontrol Anda dari alamat IP tertentu. Untuk menentukan alamat IP yang dapat diizinkan, dalam elemen Kondisi kebijakan IAM Anda, gunakan kunci kondisi aws:SourceIpglobal.

Menggunakan kunci kondisi ini juga dapat menolak akses ke Layanan AWS s lain dari melakukan panggilan API ini atas nama Anda, seperti AWS CloudFormation. Untuk mengizinkan akses ke layanan ini, gunakan kunci kondisi aws:ViaAWSServiceglobal dengan SourceIp kunci aws:. Ini memastikan bahwa pembatasan akses alamat IP sumber hanya berlaku untuk permintaan yang dibuat langsung oleh prinsipal. Untuk informasi selengkapnya, lihat AWS: Menolak akses AWS berdasarkan IP sumber.

Contoh berikut menunjukkan cara mengizinkan hanya alamat IP tertentu yang dapat membuat panggilan API ke titik akhir bidang kontrol. aws:ViaAWSServiceKuncinya disetel ketrue, yang memungkinkan layanan lain melakukan panggilan API atas nama Anda.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJobTemplate", "iot:CreateJob" ], "Resource": [ "*" ], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" }, "Bool": { "aws:ViaAWSService": "false" } } }] }

Kebijakan IAM tentang pesawat data

Kebijakan IAM pada bidang data menggunakan iotjobsdata: awalan untuk mengotorisasi operasi API lowongan yang dapat dilakukan pengguna. Pada bidang data, Anda dapat memberikan izin kepada pengguna untuk menggunakan DescribeJobExecutionAPI menggunakan tindakan iotjobsdata:DescribeJobExecution kebijakan.

Awas

Menggunakan kebijakan IAM di bidang data tidak disarankan saat menargetkan AWS IoT Pekerjaan untuk perangkat Anda. Kami menyarankan Anda menggunakan kebijakan IAM pada bidang kontrol bagi pengguna untuk membuat dan mengelola pekerjaan. Pada bidang data, untuk mengotorisasi perangkat untuk mengambil eksekusi pekerjaan dan memperbarui status eksekusi, gunakan. AWS IoT Core kebijakan untuk protokol HTTPS

Operasi API yang harus diotorisasi biasanya dilakukan oleh Anda mengetik perintah CLI. Berikut ini menunjukkan contoh pengguna yang melakukan DescribeJobExecution operasi.

Dalam contoh, ganti:

  • regiondengan Anda Wilayah AWS, sepertius-east-1.

  • account-iddengan Akun AWS nomor Anda, seperti57EXAMPLE833.

  • thing-namedengan nama hal IoT Anda yang Anda targetkan pekerjaan, seperti. myRegisteredThing

  • job-idadalah pengidentifikasi unik untuk pekerjaan yang ditargetkan menggunakan API.

aws iot-jobs-data describe-job-execution \ --endpoint-url "https://account-id.jobs.iot.region.amazonaws.com" \ --job-id jobID --thing-name thing-name

Berikut ini menunjukkan contoh kebijakan IAM yang mengizinkan tindakan ini:

JSON
{ "Version": "2012-10-17", "Statement": { "Action": [ "iotjobsdata:DescribeJobExecution" ], "Effect": "Allow", "Resource": "arn:aws:iot:us-east-1:123456789012:thing/thing-name" } }

Anda dapat membatasi prinsipal agar tidak melakukan panggilan API ke titik akhir bidang data Anda dari alamat IP tertentu. Untuk menentukan alamat IP yang dapat diizinkan, dalam elemen Kondisi kebijakan IAM Anda, gunakan kunci kondisi aws:SourceIpglobal.

Menggunakan kunci kondisi ini juga dapat menolak akses ke Layanan AWS s lain dari melakukan panggilan API ini atas nama Anda, seperti AWS CloudFormation. Untuk mengizinkan akses ke layanan ini, gunakan kunci kondisi aws:ViaAWSServiceglobal dengan kunci aws:SourceIp kondisi. Hal ini memastikan bahwa pembatasan akses alamat IP hanya berlaku untuk permintaan yang langsung dibuat oleh prinsipal. Untuk informasi selengkapnya, lihat AWS: Menolak akses AWS berdasarkan IP sumber.

Contoh berikut menunjukkan cara mengizinkan hanya alamat IP tertentu yang dapat membuat panggilan API ke titik akhir bidang data.

JSON
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iotjobsdata:*" ], "Resource": [ "*" ], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" }, "Bool": { "aws:ViaAWSService": "false" } } }] }

Contoh berikut menunjukkan cara membatasi alamat IP atau rentang alamat tertentu dari membuat panggilan API ke titik akhir bidang data.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "iotjobsdata:*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "123.45.167.89", "192.0.2.0/24", "203.0.113.0/24" ] } }, "Resource": [ "*" ] } ] }

Jika Anda melakukan operasi API pada bidang kontrol dan bidang data, tindakan kebijakan bidang kontrol Anda harus menggunakan iot: awalan, dan tindakan kebijakan bidang data Anda harus menggunakan iotjobsdata: awalan.

Misalnya, DescribeJobExecution API dapat digunakan di bidang kontrol dan bidang data. Pada bidang kontrol, DescribeJobExecutionAPI digunakan untuk menggambarkan eksekusi pekerjaan. Pada bidang data, DescribeJobExecutionAPI digunakan untuk mendapatkan detail eksekusi pekerjaan.

Kebijakan IAM berikut mengotorisasi izin pengguna untuk menggunakan DescribeJobExecution API pada bidang kontrol dan bidang data.

Dalam contoh, ganti:

  • regiondengan Anda Wilayah AWS, sepertius-east-1.

  • account-iddengan Akun AWS nomor Anda, seperti57EXAMPLE833.

  • thing-namedengan nama hal IoT Anda yang Anda targetkan pekerjaan, seperti. MyIoTThing

JSON
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iotjobsdata:DescribeJobExecution" ], "Effect": "Allow", "Resource": "arn:aws:iot:us-east-1:123456789012:thing/thing-name" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:us-east-1:123456789012:thing/thing-name", "arn:aws:iot:us-east-1:123456789012:job/*" ] } ] }

Otorisasi penandaan sumber daya IoT

Untuk kontrol yang lebih baik atas pekerjaan dan templat pekerjaan yang dapat Anda buat, modifikasi, atau gunakan, Anda dapat melampirkan tag ke pekerjaan atau templat pekerjaan. Tag juga membantu Anda membedakan kepemilikan dan menetapkan serta mengalokasikan biaya dengan menempatkannya dalam grup penagihan dan melampirkan tag pada mereka.

Ketika pengguna ingin menandai pekerjaan atau templat pekerjaan mereka yang mereka buat dengan menggunakan AWS Management Console atau AWS CLI, kebijakan IAM Anda harus memberikan izin kepada pengguna untuk menandai mereka. Untuk memberikan izin, kebijakan IAM Anda harus menggunakan tindakan tersebut. iot:TagResource

catatan

Jika kebijakan IAM Anda tidak menyertakan iot:TagResource tindakan, maka salah satu CreateJobatau CreateJobTemplatedengan tag akan menampilkan AccessDeniedException kesalahan.

Ketika Anda ingin menandai pekerjaan atau templat pekerjaan yang Anda buat dengan menggunakan AWS Management Console atau AWS CLI, kebijakan IAM Anda harus memberikan izin untuk menandai mereka. Untuk memberikan izin, kebijakan IAM Anda harus menggunakan tindakan tersebut. iot:TagResource

Untuk informasi umum tentang menandai sumber daya Anda, lihatMenandai sumber daya Anda AWS IoT.

Lihat contoh kebijakan IAM berikut yang memberikan izin penandaan:

Contoh 1

Pengguna yang menjalankan perintah berikut untuk membuat pekerjaan dan menandainya ke lingkungan tertentu.

Dalam contoh ini, ganti:

  • regiondengan Anda Wilayah AWS, sepertius-east-1.

  • account-iddengan Akun AWS nomor Anda, seperti57EXAMPLE833.

  • thing-namedengan nama hal IoT Anda yang Anda targetkan pekerjaan, seperti. MyIoTThing

aws iot create-job --job-id test_job --targets "arn:aws:iot:region:account-id:thing/thingOne" --document-source "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta

Untuk contoh ini, Anda harus menggunakan kebijakan IAM berikut:

JSON
{ "Version": "2012-10-17", "Statement": { "Action": [ "iot:CreateJob", "iot:CreateJobTemplate", "iot:TagResource" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:us-east-1:123456789012:job/*", "arn:aws:iot:us-east-1:123456789012:jobtemplate/*" ] } }