Konfigurasikan akses 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.

Konfigurasikan akses 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

Topik ini membahas keamanan tingkat database dan tabel. Untuk informasi tentang mengonfigurasi keamanan tingkat kolom, baris, dan sel, lihat Pemfilteran data dan keamanan tingkat sel di Lake Formation.

Anda menentukan izin tingkat sumber daya dalam kebijakan berbasis identitas. IAM

penting

Bagian ini membahas izin tingkat 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 IAM kebijakan yang mendefinisikan akses ke sumber daya Membuat IAM kebijakan di Panduan IAM Pengguna.
Pelajari tentang IAM kebijakan berbasis identitas yang digunakan AWS Glue Kebijakan berbasis identitas (IAMkebijakan) di AWS Glue Panduan Pengembang.

Di bagian ini

Batasan

Pertimbangkan batasan berikut ketika Anda menggunakan database dan kontrol akses tingkat tabel untuk AWS Glue Data Catalog dan Athena:

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

  • Anda dapat membatasi akses hanya ke basis data dan tabel. Kontrol ini berlaku di tingkat tabel. Anda tidak dapat membatasi akses ke partisi individu dalam tabel. Untuk informasi selengkapnya, lihat Tentang kontrol akses untuk partisi tabel dan versi di AWS Glue.

  • Bagian 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. Functionspesifik untuk AWS Glue. Untuk menghapus tindakan di Athena, Anda harus menyertakan izin AWS Glue tindakan. Lihat Contoh izin database dan tingkat tabel.

    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 hierarkis sumber daya, lihat Daftar Katalog Data ARNs di AWS Glue Panduan Pengembang.

  • 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 database dan tingkat tabel.

  • 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 database dan tingkat tabel.

Konfigurasi AWS Glue akses ke katalog dan database Anda per Wilayah AWS

Bagi Athena untuk bekerja dengan AWS Glue, kebijakan yang memberikan akses ke database Anda dan AWS Glue Data Catalog di akun Anda per Wilayah AWS diperlukan. Untuk membuat database, CreateDatabase izin juga diperlukan. Dalam contoh kebijakan berikut, ganti Wilayah AWS, Akun AWS ID, dan nama 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" ] }

Tentang kontrol akses untuk partisi tabel dan versi di AWS Glue

Masuk 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 pada tabel dan sumber daya leluhur untuk tabel.

Untuk keperluan kontrol akses, izin akses berikut berlaku:

  • Kontrol berlaku di tingkat 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 di AWS Glue pada 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 glue:GetPartitions izin pada katalog, myDB database, dan myTable sumber daya.

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

Untuk informasi tentang izin pada AWS Glue tindakan, lihat AWS Glue APIizin: Tindakan dan referensi sumber daya di AWS Glue Panduan Pengembang.

Contoh izin database dan tingkat tabel

Tabel berikut mencantumkan contoh kebijakan IAM berbasis identitas yang memungkinkan akses ke database 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 AWS Glue bisa bekerja sama. 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.

DDLpernyataan Contoh kebijakan IAM akses 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" ] }
CREATE DATABASE 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/*" ] }
DROP TABLE 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" ] }
MSCK REPAIR TABLE 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" ] }
SHOW DATABASES Memungkinkan Anda untuk membuat daftar semua database 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/*" ] }
SHOW TABLES 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/*" ] }