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
atauallow
.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, danDomainName
adalah nama domain. - Tindakan
-
(Wajib) Tindakan yang berlaku untuk pernyataan tersebut, yang Anda rujuk dengan menggunakan format berikut:
serviceId
:action
. Untuk AmazonSWF, aturserviceID
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 menggunakanswf: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 seperti
StringEquals
, yang membatasi parameter ke string tertentu. Namun, operator perbandingan string umum sepertiStringEquals
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 nilaiResource
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 nilaiResource
mengizinkan aktor untuk mengakses salah satu domain akun di wilayah tertentu. -
Wildcard (
*
) dalamAction
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.