Akses berbutir halus ke database dan tabel di AWS Glue Data Catalog - Amazon Athena

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

Akses berbutir halus ke database dan tabel di AWS Glue Data Catalog

Jika Anda menggunakan AWS Glue Data Catalog dengan Amazon Athena, Anda dapat menentukan kebijakan tingkat sumber daya untuk database dan tabel objek Katalog Data yang digunakan di Athena.

catatan

Istilah “kontrol akses berbutir halus” di sini mengacu pada keamanan tingkat database dan tabel. Untuk informasi tentang keamanan tingkat kolom, baris, dan sel, lihat Pemfilteran data dan keamanan tingkat sel di Lake Formation.

Anda menentukan izin level sumber daya di kebijakan berbasis identitas IAM.

penting

Bagian ini membahas izin level sumber daya dalam kebijakan berbasis identitas IAM. Kebijakan ini berbeda dengan kebijakan berbasis sumber daya. Untuk informasi selengkapnya tentang perbedaan, lihat Kebijakan berbasis identitas dan kebijakan berbasis sumber daya di Panduan Pengguna IAM.

Lihat topik berikut untuk tugas berikut:

Untuk melakukan tugas ini Lihat topik berikut:
Membuat kebijakan IAM yang mendefinisikan akses detail ke sumber daya Membuat kebijakan IAM di Panduan Pengguna IAM.
Pelajari tentang kebijakan berbasis identitas IAM yang digunakan di AWS Glue Kebijakan berbasis identitas (kebijakan IAM) dalam Panduan Pengembang.AWS Glue

Di bagian ini

Batasan

Pertimbangkan batasan berikut jika menggunakan kontrol akses detail dengan AWS Glue Data Catalog dan Athena:

  • Kelompok kerja Athena yang mengaktifkan Pusat Identitas IAM mengharuskan Lake Formation dikonfigurasi untuk menggunakan identitas Pusat Identitas IAM. Untuk informasi selengkapnya, lihat Mengintegrasikan Pusat Identitas IAM di Panduan AWS Lake Formation Pengembang.

  • Anda dapat membatasi akses hanya ke basis data dan tabel. Kontrol akses berbutir halus berlaku di level tabel dan Anda tidak dapat membatasi akses ke masing-masing partisi dalam tabel. Untuk informasi selengkapnya, lihat Partisi tabel dan versi di AWS Glue.

  • AWS Glue Data Catalog Berisi sumber daya berikut:CATALOG,DATABASE,TABLE, danFUNCTION.

    catatan

    Dari daftar ini, sumber daya yang umum antara Athena dan AWS Glue Data Catalog adalahTABLE,DATABASE, dan CATALOG untuk setiap akun. Functionkhusus untuk AWS Glue. Untuk menghapus tindakan di Athena, Anda harus menyertakan izin untuk AWS Glue Tindakan. Lihat Contoh izin berbutir halus untuk tabel dan database.

    Hierarki adalah sebagai berikut:CATALOGadalah leluhur dari semuaDATABASESdi setiap akun, dan masing-masingDATABASEadalah leluhur untuk semuaTABLESdanFUNCTIONS. Misalnya, untuk tabel bernamatable_testyang tergolong dalam basis datadbdalam katalog di akun Anda, nenek moyangnyadbdan katalog di akun Anda. Untukdbdatabase, nenek moyangnya adalah katalog di akun Anda, dan keturunannya adalah tabel dan fungsi. Untuk informasi selengkapnya tentang struktur hirarkis sumber daya, lihatDaftar ARN dalam Katalog DatadiAWS Glue Panduan Developer.

  • Untuk tindakan Athena yang tidak dihapus pada sumber daya, sepertiCREATE DATABASE,CREATE TABLE,SHOW DATABASE,SHOW TABLE, atauALTER TABLE, Anda memerlukan izin untuk memanggil tindakan ini pada sumber daya (tabel atau basis data) dan semua nenek moyang sumber daya dalam Katalog Data. Misalnya, untuk tabel, nenek moyangnya adalah basis data yang menjadi miliknya, dan katalog untuk akun tersebut. Untuk basis data, nenek moyangnya adalah katalog untuk akun. Lihat Contoh izin berbutir halus untuk tabel dan database.

  • Untuk tindakan hapus di Athena, seperti DROP DATABASE atauDROP TABLE, Anda juga memerlukan izin untuk memanggil tindakan hapus pada semua leluhur dan keturunan sumber daya di Katalog Data. Misalnya, untuk menghapus basis data Anda memerlukan izin pada basis data, katalog, yang merupakan nenek moyangnya, dan semua tabel dan fungsi yang ditetapkan pengguna, yang merupakan keturunannya. Meja tidak memiliki keturunan. Untuk menjalankanDROP TABLE, Anda memerlukan izin untuk tindakan ini di atas tabel, basis data yang dimiliki, dan katalog. Lihat Contoh izin berbutir halus untuk tabel dan database.

AWS Glue akses ke katalog dan database Anda per Wilayah AWS

Agar Athena dapat bekerja dengan AWS Glue, kebijakan yang memberikan akses ke database Anda dan ke akun Anda per Wilayah AWS diperlukan. AWS Glue Data Catalog Untuk membuat database, CreateDatabase izin juga diperlukan. Dalam contoh kebijakan berikut, ganti nama Wilayah AWS, Akun AWS ID, dan database dengan nama Anda sendiri.

{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default" ] }

Partisi tabel dan versi di AWS Glue

Di AWS Glue, tabel dapat memiliki partisi dan versi. Versi tabel dan partisi tidak dianggap sebagai sumber daya independen di AWS Glue. Akses ke versi tabel dan partisi diberikan dengan memberikan akses di atas tabel dan sumber leluhur untuk tabel.

Untuk tujuan kontrol akses detail, izin akses berikut berlaku:

  • Kontrol akses berbutir halus berlaku di level tabel. Anda dapat membatasi akses hanya ke basis data dan tabel. Misalnya, jika Anda mengizinkan akses ke tabel dipartisi, akses ini berlaku untuk semua partisi dalam tabel. Anda tidak dapat membatasi akses ke partisi individu dalam tabel.

    penting

    Untuk menjalankan tindakan AWS Glue di partisi, izin untuk tindakan partisi diperlukan di tingkat katalog, database, dan tabel. Memiliki akses ke partisi dalam tabel tidak cukup. Misalnya, untuk berjalan GetPartitions di atas tabel myTable dalam databasemyDB, Anda harus memberikan izin glue:GetPartitions untuk katalog, myDB database, dan myTable sumber daya.

  • Kontrol akses berbutir halus tidak berlaku untuk versi tabel. Seperti halnya partisi, akses ke versi tabel sebelumnya diberikan melalui akses ke API versi tabel di AWS Glue atas tabel, dan ke leluhur tabel.

Untuk informasi tentang izin AWS Glue tindakan, lihat Izin AWS Glue API: Referensi tindakan dan sumber daya di Panduan AWS Glue Pengembang.

Contoh izin berbutir halus untuk tabel dan database

Tabel berikut mencantumkan contoh kebijakan berbasis identitas IAM yang memungkinkan akses berbutir halus ke basis data dan tabel di Athena. Kami merekomendasikan bahwa Anda mulai dengan contoh-contoh ini dan, tergantung pada kebutuhan Anda, menyesuaikan mereka untuk mengizinkan atau menolak tindakan tertentu untuk basis data tertentu dan tabel.

Contoh-contoh ini termasuk akses ke database dan katalog sehingga Athena dan dapat bekerja sama. AWS Glue Untuk beberapa AWS Wilayah, sertakan kebijakan serupa untuk setiap database dan katalog Anda, satu baris untuk setiap Wilayah.

Dalam contoh, ganti example_db database dan test tabel dengan database dan nama tabel Anda sendiri.

Pernyataan DDL Contoh kebijakan akses IAM yang memberikan akses ke sumber daya
ALTER DATABASE Memungkinkan Anda untuk mengubah properti untukexample_dbbasis data.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:UpdateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }
BUAT BASIS DATA Memungkinkan Anda untuk membuat basis data bernamaexample_db.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }
CREATE TABLE Memungkinkan Anda untuk membuat tabel bernamatestdiexample_dbbasis data.
{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db" ] }, { "Sid": "TablePermissions", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable", "glue:GetPartitions", "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
DROP DATABASE Memungkinkan Anda untuk menjatuhkanexample_dbdatabase, termasuk semua tabel di dalamnya.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:DeleteDatabase", "glue:GetTables", "glue:GetTable", "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/*", "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/example_db/*" ] }
MEJA DROP Memungkinkan Anda untuk menjatuhkan tabel dipartisi bernamatestdiexample_dbbasis data. Jika tabel Anda tidak memiliki partisi, jangan sertakan tindakan partisi.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:DeleteTable", "glue:GetPartitions", "glue:GetPartition", "glue:DeletePartition" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
TABEL PERBAIKAN MSCK Memungkinkan Anda memperbarui metadata katalog setelah menambahkan partisi kompatibel Hive ke tabel yang disebutkan test dalam database. example_db
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetTable", "glue:GetPartitions", "glue:GetPartition", "glue:BatchCreatePartition" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/test" ] }
TAMPILKAN DATABASE Memungkinkan Anda untuk daftar semua basis data di AWS Glue Data Catalog.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/*" ] }
TAMPILKAN TABEL Memungkinkan Anda untuk daftar semua tabel diexample_dbbasis data.
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/example_db", "arn:aws:glue:us-east-1:123456789012:table/example_db/*" ] }