SWFIAMKebijakan Amazon - Amazon Simple Workflow Service

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

SWFIAMKebijakan Amazon

IAMKebijakan berisi satu atau lebih Statement elemen, yang masing-masing berisi serangkaian elemen yang menentukan kebijakan. Untuk daftar lengkap elemen d an diskusi umum tentang cara membangun kebijakan, lihat Bahasa Kebijakan Akses. Kontrol SWF akses Amazon didasarkan pada elemen-elemen berikut:

Efek

(Diperlukan) Efek dari pernyataan: deny atau allow.

catatan

Anda harus secara eksplisit mengizinkan akses; IAM menolak akses secara default.

Sumber Daya

(Wajib) Sumber daya — entitas dalam AWS layanan yang dapat berinteraksi dengan pengguna — yang berlaku untuk pernyataan tersebut.

Anda dapat mengekspresikan izin sumber daya hanya untuk domain. Misalnya, kebijakan dapat mengizinkan akses hanya ke domain tertentu di akun Anda. Untuk menyatakan izin domain, setel Resource ke Amazon Resource Name (ARN) domain, yang memiliki format “arn:aws:swf:Region:AccountID:/domain/DomainName". Region adalah AWS wilayah, AccountID adalah ID akun tanpa tanda hubung, dan DomainName adalah nama domain.

Tindakan

(Wajib) Tindakan yang berlaku untuk pernyataan tersebut, yang Anda rujuk dengan menggunakan format berikut: serviceId:action. Untuk AmazonSWF, atur serviceID keswf. Misalnya, swf:StartWorkflowExecution mengacu pada StartWorkflowExecutiontindakan, dan digunakan untuk mengontrol pengguna mana yang diizinkan untuk memulai alur kerja.

Jika Anda memberikan izin untuk menggunakan RespondDecisionTaskCompleted, Anda juga dapat mengontrol akses ke daftar keputusan yang disertakan dengan menggunakan Action untuk menyatakan izin untuk pseudo API tersebut. Karena IAM menolak akses secara default, keputusan penentu harus diizinkan secara eksplisit atau tidak akan diterima. Anda dapat menggunakan nilai * untuk mengizinkan semua keputusan.

Kondisi

(Opsional) Mengekspresikan kendala pada satu atau lebih parameter tindakan ini, yang membatasi nilai-nilai yang diizinkan.

SWFTindakan Amazon sering kali memiliki cakupan yang luas, yang dapat Anda kurangi dengan menggunakan IAM kondisi. Misalnya, untuk membatasi daftar tugas mana yang diizinkan untuk diakses PollForActivityTasktindakan, Anda menyertakan Condition dan menggunakan swf:taskList.name kunci untuk menentukan daftar yang diizinkan.

Anda dapat mengekspresikan kendala untuk entitas berikut.

  • Tipe alur kerja. Nama dan versi memiliki kunci terpisah.

  • Tipe aktivitas. Nama dan versi memiliki kunci terpisah.

  • Daftar tugas.

  • Tag. Anda dapat menentukan beberapa tag untuk beberapa tindakan. Dalam hal ini, setiap tag memiliki kunci yang terpisah.

catatan

Untuk AmazonSWF, nilainya adalah semua string sehingga Anda membatasi parameter dengan menggunakan operator string sepertiStringEquals, yang membatasi parameter ke string tertentu. Namun, operator perbandingan string umum seperti StringEquals memerlukan semua permintaan untuk memasukkan parameter. Jika Anda tidak menyertakan parameter secara eksplisit, dan tidak ada nilai default seperti daftar tugas default yang disediakan selama pendaftaran tipe, akses akan ditolak.

Hal ini sering berguna untuk menganggap syarat sebagai opsional, sehingga Anda dapat memanggil tindakan tanpa harus menyertakan parameter terkait. Misalnya, Anda mungkin ingin mengizinkan penentu menentukan serangkaian RespondDecisionTaskCompletedkeputusan, tetapi juga mengizinkannya untuk menentukan hanya satu dari mereka untuk panggilan tertentu. Dalam hal ini, Anda membatasi parameter yang sesuai menggunakan operator StringEqualsIfExists, yang mengizinkan akses jika parameter memenuhi syarat, tetapi tidak menolak akses jika parameter tidak ada.

Untuk daftar lengkap parameter yang dapat dibatasi dan kunci yang terkait, lihat APIRingkasan.

Bagian berikut memberikan contoh cara membuat SWF kebijakan Amazon. Untuk detailnya, lihat Syarat String.

Contoh SWF Kebijakan Amazon

Alur kerja terdiri dari beberapa aktor, yaitu aktivitas, decider, dan sebagainya. Anda dapat mengontrol akses untuk setiap aktor dengan melampirkan IAM kebijakan yang sesuai. Bagian ini menyediakan beberapa contoh. Berikut ini menunjukkan kasus yang paling sederhana:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/*" } ] }

Jika Anda melampirkan kebijakan ini ke aktor, kebijakan ini memiliki akses akun penuh di semua wilayah. Anda dapat menggunakan wildcard untuk memiliki nilai tunggal yang mewakili beberapa sumber daya, tindakan, atau wilayah.

  • Wildcard pertama (*) dalam nilai Resource menunjukkan bahwa izin sumber daya berlaku untuk semua wilayah. Untuk membatasi izin untuk satu wilayah, gantilah wildcard dengan string wilayah yang sesuai, seperti us-east-1.

  • Wildcard kedua (*) dalam nilai Resource mengizinkan aktor untuk mengakses salah satu domain akun di wilayah tertentu.

  • Wildcard (*) dalam Action nilai memungkinkan aktor untuk memanggil SWF tindakan Amazon apa pun.

Untuk detail tentang cara menggunakan wildcard, lihat Deskripsi Elemen

Bagian berikut menunjukkan contoh kebijakan yang memberikan izin dengan cara yang lebih terperinci.

Perizinan Domain

Jika Anda ingin membatasi alur kerja departemen ke domain tertentu, Anda dapat menggunakan sesuatu seperti:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" } ] }

Jika Anda melampirkan kebijakan ini untuk aktor, kebijakan dapat memanggil tindakan apapun, tetapi hanya untuk domain department1.

Jika Anda menginginkan satu aktor memiliki akses ke lebih dari satu domain, Anda dapat mengungkapkan izin untuk setiap domain secara terpisah, sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" }, { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }

Jika Anda melampirkan kebijakan ini ke aktor, kebijakan tersebut dapat menggunakan SWF tindakan Amazon apa pun di department2 domain department1 dan domain. Anda juga dapat menggunakan wildcard sesekali untuk mewakili beberapa domain.

APIIzin dan Kendala

Anda mengontrol tindakan yang dapat digunakan seorang aktor dengan elemen Action. Secara opsional, Anda dapat membatasi tindakan yang diizinkan nilai parameter dengan menggunakan elemen Condition.

Jika Anda ingin membatasi aktor hanya pada tindakan tertentu, Anda dapat menggunakan sesuatu seperti berikut ini:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }

Jika Anda melampirkan kebijakan ini ke aktor, kebijakan dapat menghubungi StartWorkflowExecution untuk memulai alur kerja di domain department2. Tidak dapat menggunakan tindakan lain atau memulai alur kerja di domain lain.

Anda dapat membatasi alur kerja aktor mana yang dapat memulai dengan membatasi satu atau lebih nilai parameter StartWorkflowExecution, sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1", "Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } } } ] }

Kebijakan ini membatasi parameter tindakan name dan version StartWorkflowExecution. Jika Anda melampirkan kebijakan ini ke aktor, kebijakan tersebut dapat dijalankan hanya version2 dari workflow1 dalam domain department1 dan kedua parameter harus disertakan dalam permintaan.

Anda dapat membatasi parameter tanpa harus memasukkanya dalam permintaan dengan menggunakan operator StringEqualsIfExists, sebagai berikut:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } } } ] }

Kebijakan ini mengizinkan aktor untuk menentukan daftar tugas saat memulai eksekusi alur kerja secara opsional.

Anda dapat membatasi daftar tag untuk beberapa tindakan. Dalam hal ini, setiap tag memiliki kunci terpisah, sehingga Anda menggunakan swf:tagList.member.0 untuk membatasi tanda pertama dalam daftar, swf:tagList.member.1 untuk membatasi tag kedua dalam daftar, dan seterusnya, hingga maksimum 5. Namun, Anda harus berhati-hati dalam membatasi daftar tag. Misalnya, berikut ini adalah contoh kebijakan yang tidak direkomendasikan:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } } } ] }

Kebijakan ini mengizinkan Anda untuk menentukan baik some_ok_tag atau another_ok_tag secara opsional. Namun, kebijakan ini membatasi hanya elemen pertama dari daftar tag. Daftar dapat memiliki elemen tambahan dengan nilai semaunya yang semuanya akan diizinkan karena kebijakan ini tidak menerapkan syarat apa pun untuk swf:tagList.member.1, swf:tagList.member.2, dan sebagainya.

Salah satu cara untuk mengatasi masalah ini adalah dengan melarang penggunaan daftar tag. Kebijakan berikut memastikan bahwa hanya some_ok_tag atau another_ok_tag yang diperbolehkan dengan mewajibkan daftar hanya memiliki satu elemen.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } } } ] }

APIIzin dan Kendala Pseudo

Jika Anda ingin membatasi keputusan yang tersedia untuk RespondDecisionTaskCompleted, Anda harus terlebih dahulu mengizinkan aktor untuk memanggil RespondDecisionTaskCompleted. Anda kemudian dapat mengekspresikan izin untuk API anggota pseudo yang sesuai dengan menggunakan sintaks yang sama seperti untuk regulerAPI, sebagai berikut:

{ "Version": "2012-10-17", "Statement" : [ { "Resource" : "arn:aws:swf:*:123456789012:/domain/*", "Action" : "swf:RespondDecisionTaskCompleted", "Effect" : "Allow" }, { "Resource" : "*", "Action" : "swf:ScheduleActivityTask", "Effect" : "Allow", "Condition" : { "StringEquals" : { "swf:activityType.name" : "SomeActivityType" } } } ] }

Jika Anda melampirkan kebijakan ini ke aktor, elemen Statement mengizinkan aktor untuk memanggil RespondDecisionTaskCompleted. Elemen kedua memungkinkan aktor untuk menggunakan ScheduleActivityTask keputusan untuk mengarahkan Amazon SWF untuk menjadwalkan tugas aktivitas. Untuk mengizinkan semua keputusan, ganti “swf:ScheduleActivityTask" dengan “swf: *”.

Anda dapat menggunakan operator Kondisi untuk membatasi parameter seperti biasaAPI. Operator StringEquals dalam Condition ini mengizinkan RespondDecisionTaskCompleted untuk menjadwalkan tugas aktivitas untuk aktivitas SomeActivityType, dan harus menjadwalkan tugas tersebut. Jika Anda ingin mengizinkan RespondDecisionTaskCompleted untuk menggunakan nilai parameter tetapi tidak memerlukan untuk melakukannya, Anda sebaliknya dapat menggunakan operator StringEqualsIfExists.

AWS kebijakan terkelola: SimpleWorkflowFullAccess

Anda dapat melampirkan SimpleWorkflowFullAccess kebijakan ke IAM identitas Anda.

Kebijakan ini menyediakan akses penuh ke layanan SWF konfigurasi Amazon.

Detail izin

Kebijakan ini mencakup izin berikut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "swf:*" ], "Resource": "*" } ] }

Batasan Model Layanan pada IAM Kebijakan

Anda harus mempertimbangkan kendala model layanan saat membuat kebijakan. IAM Dimungkinkan untuk membuat IAM kebijakan yang valid secara sintaksis yang mewakili permintaan SWF Amazon yang tidak valid; permintaan yang diizinkan dalam hal kontrol akses masih dapat gagal karena merupakan permintaan yang tidak valid.

Misalnya, kebijakan berikut untuk ListOpenWorkflowExecutions adalah tidak disarankan:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:ListOpenWorkflowExecutions", "Resource" : "arn:aws:swf:*:123456789012:/domain/domain_name", "Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } } } ] }

Model SWF layanan Amazon tidak mengizinkan tagFilter parameter typeFilter dan digunakan dalam ListOpenWorkflowExecutions permintaan yang sama. Oleh karena itu kebijakan mengizinkan panggilan yang akan ditolak layanan—dengan melemparkan ValidationException—sebagai permintaan yang tidak valid.