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 IAM kebijakan pada bidang kontrol dan bidang data. Kebijakan harus digunakan dengan HTTPS protokol 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 IAM kebijakan 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.

IAMkebijakan adalah JSON dokumen 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 IAM JSON Kebijakan di Panduan IAM pengguna.

Awas

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

IAMkebijakan di bidang kontrol

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

Tabel berikut menunjukkan daftar tindakan IAM kebijakan dan izin untuk menggunakan API tindakan. 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.

IAMtindakan kebijakan pada bidang kontrol
Tindakan kebijakan APIoperasi 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 IAM kebijakan yang memungkinkan izin pengguna untuk melakukan tindakan berikut untuk hal IoT dan grup benda Anda.

Dalam contoh, ganti:

  • region dengan Anda Wilayah AWS, sepertius-east-1.

  • account-id dengan Akun AWS nomor Anda, seperti 57EXAMPLE833

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

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

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

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

Menggunakan kunci kondisi ini juga dapat menolak akses ke Layanan AWS s lain dari melakukan API panggilan 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 bagaimana mengizinkan hanya alamat IP tertentu yang dapat membuat API panggilan ke titik akhir bidang kontrol. aws:ViaAWSServiceKuncinya diatur ketrue, yang memungkinkan layanan lain melakukan API panggilan atas nama Anda.

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

IAMkebijakan pada bidang data

IAMkebijakan pada bidang data menggunakan iotjobsdata: awalan untuk mengotorisasi API operasi pekerjaan yang dapat dilakukan pengguna. Pada bidang data, Anda dapat memberikan izin kepada pengguna untuk DescribeJobExecutionAPImenggunakan tindakan iotjobsdata:DescribeJobExecution kebijakan.

Awas

Menggunakan IAM kebijakan pada bidang data tidak disarankan saat menargetkan AWS IoT Pekerjaan untuk perangkat Anda. Kami menyarankan Anda menggunakan IAM kebijakan 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 HTTPS protokol

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

Dalam contoh, ganti:

  • region dengan Anda Wilayah AWS, sepertius-east-1.

  • account-id dengan Akun AWS nomor Anda, seperti 57EXAMPLE833

  • thing-name dengan 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 IAM kebijakan yang mengizinkan tindakan ini:

{ "Version": "2012-10-17", "Statement": { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name", } }

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

Menggunakan kunci kondisi ini juga dapat menolak akses ke Layanan AWS s lain dari melakukan API panggilan 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 bagaimana mengizinkan hanya alamat IP tertentu yang dapat membuat API panggilan ke titik akhir bidang data.

{ "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 tertentu atau rentang alamat dari membuat API panggilan ke titik akhir bidang data.

{ "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 API operasi 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, DescribeJobExecutionAPIdigunakan untuk menggambarkan eksekusi pekerjaan. Pada bidang data, DescribeJobExecutionAPIdigunakan untuk mendapatkan detail eksekusi pekerjaan.

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

Dalam contoh, ganti:

  • region dengan Anda Wilayah AWS, sepertius-east-1.

  • account-id dengan Akun AWS nomor Anda, seperti 57EXAMPLE833

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

{ "Version": "2012-10-17", "Statement": [ { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id: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.

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

catatan

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

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

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

Lihat contoh IAM kebijakan berikut yang memberikan izin penandaan:

Contoh 1

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

Dalam contoh ini, ganti:

  • region dengan Anda Wilayah AWS, sepertius-east-1.

  • account-id dengan Akun AWS nomor Anda, seperti 57EXAMPLE833

  • thing-name dengan 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 IAM kebijakan berikut:

{ "Version": "2012-10-17", "Statement": { "Action": [ "iot:CreateJob", "iot:CreateJobTemplate", "iot:TagResource" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:aws-region:account-id:job/*", "arn:aws:iot:aws-region:account-id:jobtemplate/*" ] } }