Contoh kebijakan berbasis identitas untuk Glue AWS - AWS Glue

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

Contoh kebijakan berbasis identitas untuk Glue AWS

Secara default, pengguna dan peran tidak memiliki izin untuk membuat atau memodifikasi sumber daya AWS Glue. Mereka juga tidak dapat melakukan tugas dengan menggunakan AWS Management Console, AWS Command Line Interface (AWS CLI), atau AWS API. Untuk memberikan izin kepada pengguna untuk melakukan tindakan pada sumber daya yang mereka butuhkan, IAM administrator dapat membuat IAM kebijakan. Administrator kemudian dapat menambahkan IAM kebijakan ke peran, dan pengguna dapat mengambil peran.

Untuk mempelajari cara membuat kebijakan IAM berbasis identitas menggunakan contoh dokumen kebijakan ini, lihat Membuat JSON IAM kebijakan (konsol) di Panduan Pengguna. IAM

Untuk detail tentang tindakan dan jenis sumber daya yang ditentukan oleh AWS Glue, termasuk format ARNs untuk setiap jenis sumber daya, lihat Kunci tindakan, sumber daya, dan kondisi untuk AWS Glue dalam Referensi Otorisasi Layanan.

catatan

Contoh yang diberikan di bagian ini semuanya menggunakan us-west-2 Wilayah. Anda dapat mengganti ini dengan AWS Wilayah yang ingin Anda gunakan.

Praktik terbaik kebijakan

Kebijakan berbasis identitas menentukan apakah seseorang dapat membuat, mengakses, atau menghapus sumber daya AWS Glue di akun Anda. Tindakan ini membuat Akun AWS Anda dikenai biaya. Ketika Anda membuat atau mengedit kebijakan berbasis identitas, ikuti panduan dan rekomendasi ini:

  • Mulailah dengan kebijakan AWS terkelola dan beralih ke izin hak istimewa paling sedikit — Untuk mulai memberikan izin kepada pengguna dan beban kerja Anda, gunakan kebijakan AWS terkelola yang memberikan izin untuk banyak kasus penggunaan umum. Mereka tersedia di Anda Akun AWS. Kami menyarankan Anda mengurangi izin lebih lanjut dengan menentukan kebijakan yang dikelola AWS pelanggan yang khusus untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat kebijakan AWSAWS terkelola atau kebijakan terkelola untuk fungsi pekerjaan di Panduan IAM Pengguna.

  • Menerapkan izin hak istimewa paling sedikit — Saat Anda menetapkan izin dengan IAM kebijakan, berikan hanya izin yang diperlukan untuk melakukan tugas. Anda melakukannya dengan mendefinisikan tindakan yang dapat diambil pada sumber daya tertentu dalam kondisi tertentu, yang juga dikenal sebagai izin dengan hak akses paling rendah. Untuk informasi selengkapnya tentang penggunaan IAM untuk menerapkan izin, lihat Kebijakan dan izin IAM di IAM Panduan Pengguna.

  • Gunakan ketentuan dalam IAM kebijakan untuk membatasi akses lebih lanjut — Anda dapat menambahkan kondisi ke kebijakan Anda untuk membatasi akses ke tindakan dan sumber daya. Misalnya, Anda dapat menulis kondisi kebijakan untuk menentukan bahwa semua permintaan harus dikirim menggunakanSSL. Anda juga dapat menggunakan ketentuan untuk memberikan akses ke tindakan layanan jika digunakan melalui yang spesifik Layanan AWS, seperti AWS CloudFormation. Untuk informasi selengkapnya, lihat elemen IAM JSON kebijakan: Kondisi dalam Panduan IAM Pengguna.

  • Gunakan IAM Access Analyzer untuk memvalidasi IAM kebijakan Anda guna memastikan izin yang aman dan fungsional — IAM Access Analyzer memvalidasi kebijakan baru dan yang sudah ada sehingga kebijakan mematuhi bahasa IAM kebijakan () JSON dan praktik terbaik. IAM IAMAccess Analyzer menyediakan lebih dari 100 pemeriksaan kebijakan dan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang aman dan fungsional. Untuk informasi selengkapnya, lihat Memvalidasi kebijakan dengan IAM Access Analyzer di IAMPanduan Pengguna.

  • Memerlukan otentikasi multi-faktor (MFA) - Jika Anda memiliki skenario yang mengharuskan IAM pengguna atau pengguna root di dalam Anda Akun AWS, aktifkan MFA untuk keamanan tambahan. Untuk meminta MFA kapan API operasi dipanggil, tambahkan MFA kondisi ke kebijakan Anda. Untuk informasi selengkapnya, lihat APIAkses aman dengan MFA di Panduan IAM Pengguna.

Untuk informasi selengkapnya tentang praktik terbaik diIAM, lihat Praktik terbaik keamanan IAM di Panduan IAM Pengguna.

Izin tingkat sumber daya hanya berlaku untuk yang spesifik AWS Glue objek

Anda hanya dapat menentukan kontrol berbutir halus untuk objek tertentu di AWS Glue. Oleh karena itu Anda harus menulis IAM kebijakan klien Anda sehingga API operasi yang memungkinkan Amazon Resource Names (ARNs) untuk Resource pernyataan tidak dicampur dengan API operasi yang tidak mengizinkanARNs.

Misalnya, IAM kebijakan berikut memungkinkan API operasi untuk GetClassifier danGetJobRun. Ini mendefinisikan Resource sebagai karena * AWS Glue tidak mengizinkan ARNs pengklasifikasi dan menjalankan pekerjaan. Karena ARNs diperbolehkan untuk API operasi tertentu seperti GetDatabase danGetTable, ARNs dapat ditentukan di paruh kedua kebijakan.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetClassifier*", "glue:GetJobRun*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:Get*" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default", "arn:aws:glue:us-east-1:123456789012:table/default/e*1*", "arn:aws:glue:us-east-1:123456789012:connection/connection2" ] } ] }

Untuk daftar AWS Glue objek yang memungkinkanARNs, lihatMenentukan Sumber Daya AWS Glue ARNs.

Menggunakan konsol AWS Glue

Untuk mengakses konsol AWS Glue, Anda harus memiliki set izin minimum. Izin ini harus memungkinkan Anda untuk membuat daftar dan melihat detail tentang sumber daya AWS Glue di Anda Akun AWS. Jika Anda membuat kebijakan berbasis identitas yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya untuk entitas (pengguna atau peran) dengan kebijakan tersebut.

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke AWS CLI atau. AWS API Sebagai gantinya, izinkan akses hanya ke tindakan yang cocok dengan API operasi yang mereka coba lakukan.

Untuk memastikan bahwa pengguna dan peran masih dapat menggunakan konsol AWS Glue, lampirkan juga AWS Glue ConsoleAccess atau kebijakan ReadOnly AWS terkelola ke entitas. Untuk informasi selengkapnya, lihat Menambahkan izin ke pengguna di Panduan IAM Pengguna.

Bagi pengguna untuk bekerja dengan AWS Glue konsol, pengguna itu harus memiliki set izin minimum yang memungkinkan mereka untuk bekerja dengan AWS Glue sumber daya untuk AWS akun mereka. Selain ini AWS Glue izin, konsol memerlukan izin dari layanan berikut:

  • Izin CloudWatch Log Amazon untuk menampilkan log.

  • AWS Identity and Access Management (IAM) izin untuk membuat daftar dan meneruskan peran.

  • AWS CloudFormation izin untuk bekerja dengan tumpukan.

  • Izin Amazon Elastic Compute Cloud (AmazonEC2) untuk daftarVPCs, subnet, grup keamanan, instance, dan objek lainnya.

  • Izin Amazon Simple Storage Service (Amazon S3) untuk mencantumkan bucket dan objek, dan untuk mengambil dan menyimpan skrip.

  • Izin Amazon Redshift untuk bekerja dengan klaster.

  • Izin Amazon Relational Database Service (RDSAmazon) untuk mencantumkan instance.

Untuk informasi selengkapnya tentang izin yang diperlukan pengguna untuk melihat dan bekerja dengan AWS Glue konsol, lihatLangkah 3: Lampirkan kebijakan ke pengguna atau grup yang mengakses AWS Glue.

Jika Anda membuat IAM kebijakan yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana dimaksud untuk pengguna dengan kebijakan tersebutIAM. Untuk memastikan bahwa pengguna tersebut masih dapat menggunakan AWS Glue konsol, juga lampirkan kebijakan AWSGlueConsoleFullAccess terkelola seperti yang dijelaskan dalamAWS kebijakan terkelola (standar) untuk AWS Glue.

Mengizinkan pengguna melihat izin mereka sendiri

Contoh ini menunjukkan cara Anda membuat kebijakan yang memungkinkan IAM pengguna melihat kebijakan sebaris dan terkelola yang dilampirkan pada identitas pengguna mereka. Kebijakan ini mencakup izin untuk menyelesaikan tindakan ini di konsol atau secara terprogram menggunakan atau. AWS CLI AWS API

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Berikan izin hanya-baca ke tabel

Kebijakan ini memberikan izin baca-saja ke sebuah tabel books dalam basis data db1. Untuk informasi selengkapnya tentang sumber daya Amazon Resource Names (ARNs), lihatKatalog Data ARNs.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesActionOnBooks", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Kebijakan ini memberikan izin baca-saja ke tabel bernama books dalam basis data bernama db1. Untuk memberikan Get izin ke tabel, izin ke katalog dan sumber daya database juga diperlukan.

Kebijakan berikut memberikan izin minimum yang diperlukan untuk membuat tabel tb1 dalam basis data db1:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:table/db1/tbl1", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:catalog" ] } ] }

Filter tabel dengan GetTables izin

Asumsikan bahwa ada tiga tabel—yaitu, customers, stores, dan store_sales—dalam basis data db1. Kebijakan berikut memberikan izin GetTables untuk stores dan store_sales, tetapi tidak untuk customers. Ketika Anda memanggil GetTables dengan kebijakan ini, hasilnya hanya berisi dua tabel yang mendapat otorisasi (tabel customers tidak dikembalikan).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store_sales", "arn:aws:glue:us-west-2:123456789012:table/db1/stores" ] } ] }

Anda dapat menyederhanakan kebijakan sebelumnya dengan menggunakan store* untuk mencocokkan dengan nama tabel yang dimulai dengan store.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample2", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store*" ] } ] }

Demikian pula, menggunakan /db1/* untuk mencocokkan dengan semua tabel di db1, kebijakan berikut memberikan akses GetTables ke semua tabel di db1.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesReturnAll", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }

Jika tidak ARN ada tabel yang disediakan, panggilan untuk GetTables berhasil, tetapi mengembalikan daftar kosong.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesEmptyResults", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1" ] } ] }

Jika database ARN tidak ada dalam kebijakan, panggilan untuk GetTables gagal dengan fileAccessDeniedException.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesAccessDeny", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }

Berikan akses penuh ke tabel dan semua partisi

Kebijakan ini memberikan semua izin pada sebuah tabel bernama books dalam basis data db1. Ini termasuk izin baca dan tulis pada tabel itu sendiri, pada versi yang diarsipkannya, dan pada semua partisinya.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:DeleteTableVersion", "glue:BatchDeleteTableVersion", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Kebijakan sebelumnya dapat disederhanakan dalam prakteknya.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:*Table*", "glue:*Partition*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Perhatikan bahwa kedetailan minimum dari kontrol akses detail adalah pada tingkat tabel. Ini berarti bahwa Anda tidak dapat memberikan akses kepada pengguna ke beberapa partisi dalam sebuah tabel, tetapi tidak dalam tabel lainnya, atau beberapa kolom tabel, tetapi tidak lainnya. Seorang pengguna memiliki akses ke semua tabel, atau tidak sama sekali.

Kontrol akses dengan awalan nama dan penolakan eksplisit

Dalam contoh ini, misalkan database dan tabel di Katalog Data AWS Glue Anda diatur menggunakan awalan nama. Basis data dalam tahap pengembangan memiliki nama prefiks dev-, dan yang dalam produksi memiliki prefiks nama prod-. Anda dapat menggunakan kebijakan berikut untuk memberikan pengembang akses penuh ke semua database, tabelUDFs, dan sebagainya, yang memiliki dev- awalan. Namun Anda memberikan akses baca-saja ke semua yang memiliki prefiks prod-.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DevAndProdFullAccess", "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*", "glue:*UserDefinedFunction*", "glue:*Connection*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/dev-*", "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/dev-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/dev-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/dev-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/dev-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/dev-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] }, { "Sid": "ProdWriteDeny", "Effect": "Deny", "Action": [ "glue:*Create*", "glue:*Update*", "glue:*Delete*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] } ] }

Pernyataan kedua dalam kebijakan sebelumnya menggunakan deny eksplisit. Anda dapat menggunakan deny eksplisit untuk menimpa izin allow yang diberikan kepada prinsipal utama. Hal ini memungkinkan Anda mengunci akses ke sumber daya penting dan mencegah kebijakan lain memberikan akses kepada mereka secara tidak sengaja.

Dalam contoh sebelumnya, meskipun pernyataan pertama memberikan akses penuh ke sumber daya prod-, pernyataan kedua secara eksplisit mencabut akses tulis ke mereka, yang hanya menyisakan akses baca ke sumber daya prod-.

Berikan akses menggunakan tag

Misalnya, anggaplah Anda ingin membatasi akses ke sebuah pemicu t2 ke pengguna tertentu bernama Tom di akun Anda. Semua pengguna lain, termasuk Sam, memiliki akses ke pemicu t1. Pemicu t1 dan t2 memiliki properti berikut.

aws glue get-triggers { "Triggers": [ { "State": "CREATED", "Type": "SCHEDULED", "Name": "t1", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" }, { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } ] }

Bagian AWS Glue administrator melampirkan nilai tag Tom (aws:ResourceTag/Name": "Tom") untuk memicut2. Bagian AWS Glue administrator juga memberi Tom IAM kebijakan dengan pernyataan kondisi berdasarkan tag. Akibatnya, Tom hanya bisa menggunakan AWS Glue operasi yang bertindak pada sumber daya dengan nilai tagTom.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Ketika Tom mencoba mengakses pemicu t1, ia menerima pesan akses ditolak. Sementara itu, ia dapat berhasil mengambil pemicu t2.

aws glue get-trigger --name t1 An error occurred (AccessDeniedException) when calling the GetTrigger operation: User: Tom is not authorized to perform: glue:GetTrigger on resource: arn:aws:glue:us-east-1:123456789012:trigger/t1 aws glue get-trigger --name t2 { "Trigger": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } }

Tom tidak dapat menggunakan GetTriggers API operasi jamak untuk membuat daftar pemicu karena operasi ini tidak mendukung pemfilteran pada tag.

Untuk memberi Tom akses keGetTriggers, AWS Glue administrator membuat kebijakan yang membagi izin menjadi dua bagian. Satu bagian memungkinkan Tom mengakses semua pemicu dengan GetTriggers API operasi. Bagian kedua memungkinkan Tom akses ke API operasi yang ditandai dengan nilaiTom. Dengan kebijakan ini, Tom diperbolehkan menggunakan akses GetTriggers dan GetTrigger ke pemicu t2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Tolak akses menggunakan tag

Pendekatan kebijakan sumber daya lainnya adalah dengan secara eksplisit menolak akses ke sumber daya.

penting

Kebijakan penolakan eksplisit tidak berfungsi untuk API operasi jamak seperti. GetTriggers

Dalam contoh kebijakan berikut, semua AWS Glue operasi pekerjaan diperbolehkan. Namun, Effect pernyataan kedua secara eksplisit menolak akses ke pekerjaan yang ditandai dengan kunci dan nilai. Team Special

Ketika administrator melampirkan kebijakan berikut ke identitas, identitas dapat mengakses semua pekerjaan kecuali yang ditandai dengan Team kunci dan Special nilai.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*" }, { "Effect": "Deny", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Special" } } } ] }

Gunakan tag dengan daftar dan API operasi batch

Pendekatan ketiga untuk menulis kebijakan sumber daya adalah mengizinkan akses ke sumber daya menggunakan List API operasi untuk mencantumkan sumber daya untuk nilai tag. Kemudian, gunakan Batch API operasi yang sesuai untuk memungkinkan akses ke detail sumber daya tertentu. Dengan pendekatan ini, administrator tidak perlu mengizinkan akses ke jamakGetCrawlers,, GetDevEndpointsGetJobs, atau GetTriggers API operasi. Sebagai gantinya, Anda dapat mengizinkan kemampuan untuk membuat daftar sumber daya dengan API operasi berikut:

  • ListCrawlers

  • ListDevEndpoints

  • ListJobs

  • ListTriggers

Dan, Anda dapat mengizinkan kemampuan untuk mendapatkan detail tentang sumber daya individu dengan API operasi berikut:

  • BatchGetCrawlers

  • BatchGetDevEndpoints

  • BatchGetJobs

  • BatchGetTriggers

Sebagai administrator, untuk menggunakan pendekatan ini, Anda dapat melakukan hal berikut ini:

  1. Tambahkan tag ke crawler, titik akhir pengembangan, tugas, dan pemicu Anda.

  2. Tolak akses pengguna ke Get API operasi sepertiGetCrawlers,GetDevEndponts,GetJobs, danGetTriggers.

  3. Untuk memungkinkan pengguna mengetahui sumber daya yang diberi tag yang mereka akses, izinkan akses pengguna ke List API operasi sepertiListCrawlers,, ListDevEndpontsListJobs, danListTriggers.

  4. Tolak akses pengguna ke AWS Glue tagAPIs, seperti TagResource danUntagResource.

  5. Izinkan pengguna mengakses detail sumber daya dengan BatchGet API operasi sepertiBatchGetCrawlers,BatchGetDevEndponts,BatchGetJobs, danBatchGetTriggers.

Misalnya, saat memanggil operasi ListCrawlers, berikan nilai tag yang cocok dengan nama pengguna. Maka hasilnya adalah sebuah daftar crawler yang cocok dengan nilai tag yang disediakan. Berikan daftar nama BatchGetCrawlers untuk mendapatkan detail tentang setiap crawler dengan tag yang diberikan.

Misalnya, jika Tom hanya dapat mengambil detail pemicu yang ditandai, administrator dapat menambahkan tag ke pemicuTom, menolak akses ke GetTriggers API operasi ke semua penggunaTom, dan mengizinkan akses ke semua pengguna ke dan. ListTriggers BatchGetTriggers

Berikut ini adalah kebijakan sumber daya yang AWS Glue administrator memberikan hibah kepada Tom. Di bagian pertama kebijakan, AWS Glue APIoperasi ditolak untukGetTriggers. Pada bagian kedua dari kebijakan tersebut, ListTriggers diperbolehkan untuk semua sumber daya. Namun demikian, di bagian ketiga, sumber daya yang ditandai dengan Tom tersebut diperbolehkan mengakses dengan akses BatchGetTriggers.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:ListTriggers" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:BatchGetTriggers" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Dengan menggunakan pemicu yang sama seperti contoh sebelumnya, Tom dapat mengakses pemicu t2, tapi tidak pemicu t1. Contoh berikut menunjukkan hasil ketika Tom mencoba untuk mengakses t1 dan t2 dengan BatchGetTriggers.

aws glue batch-get-triggers --trigger-names t2 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "Schedule": "cron(0 0/1 * * ? *)" } } aws glue batch-get-triggers --trigger-names t1 An error occurred (AccessDeniedException) when calling the BatchGetTriggers operation: No access to any requested resource.

Contoh berikut menunjukkan hasil ketika Tom mencoba untuk mengakses pemicu t2 dan pemicu t3 (yang tidak ada) dalam panggilan BatchGetTriggers yang sama. Perhatikan bahwa karena Tom memiliki akses ke pemicu t2 dan itu ada, hanya t2 yang dikembalikan. Meskipun Tom diperbolehkan untuk mengakses pemicu t3, namun pemicu t3 tidak ada, jadi t3 dikembalikan dalam respon dalam sebuah daftar "TriggersNotFound": [].

aws glue batch-get-triggers --trigger-names t2 t3 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "TriggersNotFound": ["t3"], "Schedule": "cron(0 0/1 * * ? *)" } }

Pengaturan kontrol menggunakan tombol kondisi atau tombol konteks

Anda dapat menggunakan tombol kondisi atau kunci konteks saat memberikan izin untuk membuat dan memperbarui pekerjaan. Bagian ini membahas kunci:

Kebijakan kontrol yang mengontrol pengaturan menggunakan tombol kondisi

AWS Glue menyediakan tiga kunci IAM kondisiglue:VpcIds,glue:SubnetIds, danglue:SecurityGroupIds. Anda dapat menggunakan kunci kondisi dalam IAM kebijakan saat memberikan izin untuk membuat dan memperbarui pekerjaan. Anda dapat menggunakan pengaturan ini untuk memastikan bahwa pekerjaan atau sesi tidak dibuat (atau diperbarui ke) untuk berjalan di luar VPC lingkungan yang diinginkan. Informasi VPC pengaturan bukanlah masukan langsung dari CreateJob permintaan, tetapi disimpulkan dari bidang “koneksi” pekerjaan yang menunjuk ke AWS Glue koneksi.

Contoh penggunaan

Buat sebuah AWS Glue koneksi jenis jaringan bernama "traffic-monitored-connection" dengan “ VpcId vpc-id1234" yang diinginkan,, dan. SubnetIds SecurityGroupIds

Tentukan kondisi kunci kondisi untuk CreateJob dan UpdateJob tindakan dalam IAM kebijakan.

{ "Effect": "Allow", "Action": [ "glue:CreateJob", "glue:UpdateJob" ], "Resource": [ "*" ], "Condition": { "ForAnyValue:StringLike": { "glue:VpcIds": [ "vpc-id1234" ] } } }

Anda dapat membuat IAM kebijakan serupa untuk melarang pembuatan AWS Glue pekerjaan tanpa menentukan informasi koneksi.

Membatasi sesi pada VPCs

<123>Untuk menegakkan sesi yang dibuat agar berjalan dalam yang ditentukanVPC, Anda membatasi izin peran dengan menambahkan Deny efek pada glue:CreateSession tindakan dengan syarat bahwa lem: vpc-id tidak sama dengan vpc-. Sebagai contoh:

"Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "StringNotEquals" : {"glue:VpcIds" : ["vpc-123"]} }

Anda juga dapat menerapkan sesi yang dibuat untuk dijalankan dalam a VPC dengan menambahkan Deny efek pada glue:CreateSession tindakan dengan kondisi bahwa glue:vpc-id adalah null. Sebagai contoh:

{ "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "Null": {"glue:VpcIds": true} } }, { "Effect": "Allow", "Action": [ "glue:CreateSession" ], "Resource": ["*"] }

Kebijakan kontrol yang mengontrol pengaturan menggunakan tombol konteks

AWS Glue menyediakan kunci konteks (glue:CredentialIssuingService= glue.amazonaws.com) untuk setiap sesi peran yang AWS Glue menyediakan untuk pekerjaan dan titik akhir pengembang. Ini memungkinkan Anda untuk menerapkan kontrol keamanan untuk tindakan yang diambil oleh AWS Glue skrip. AWS Glue menyediakan kunci konteks lain (glue:RoleAssumedBy=glue.amazonaws.com) untuk setiap sesi peran di mana AWS Glue melakukan panggilan ke AWS layanan lain atas nama pelanggan (bukan oleh titik akhir pekerjaan/pengembang, tetapi langsung oleh AWS Glue layanan).

Contoh penggunaan

Tentukan izin bersyarat dalam IAM kebijakan dan lampirkan ke peran yang akan digunakan oleh AWS Glue pekerjaan. Ini memastikan tindakan tertentu diizinkan/ditolak berdasarkan apakah sesi peran digunakan untuk AWS Glue lingkungan runtime pekerjaan.

{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }

Menolak identitas kemampuan untuk membuat sesi pratinjau data

Bagian ini berisi contoh IAM kebijakan yang digunakan untuk menolak identitas kemampuan untuk membuat sesi pratinjau data. Lampirkan kebijakan ini ke identitas, yang terpisah dari peran yang digunakan oleh sesi pratinjau data selama dijalankan.

{ "Sid": "DatapreviewDeny", "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Resource": [ "arn:aws:glue:*:*:session/glue-studio-datapreview*" ] }