Mengonfigurasi izin IAM - Amazon Redshift

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

Mengonfigurasi izin IAM

Amazon Redshift menyediakan kebijakan AmazonRedshiftDataFullAccess terkelola. Kebijakan ini menyediakan akses penuh ke operasi Data API Amazon Redshift. Kebijakan ini juga memungkinkan akses cakupan ke Amazon Redshift tertentu AWS Secrets Manager, IAM API serta operasi yang diperlukan untuk mengautentikasi dan mengakses klaster Amazon Redshift atau grup kerja Tanpa Server Redshift.

Anda juga dapat membuat IAM kebijakan Anda sendiri yang memungkinkan akses ke sumber daya tertentu. Untuk membuat kebijakan Anda, gunakan AmazonRedshiftDataFullAccess kebijakan sebagai templat awal Anda. Setelah membuat kebijakan, tambahkan ke setiap pengguna yang memerlukan akses ke DataAPI.

Pertimbangkan persyaratan IAM kebijakan berikut yang terkait dengan pengguna:

  • Jika Anda menggunakan AWS Secrets Manager untuk mengautentikasi, konfirmasikan kebijakan mengizinkan penggunaan secretsmanager:GetSecretValue tindakan untuk mengambil rahasia yang ditandai dengan kunci. RedshiftDataFullAccess

  • Jika Anda menggunakan kredensyal sementara untuk mengautentikasi ke kluster, konfirmasikan kebijakan tersebut mengizinkan penggunaan redshift:GetClusterCredentials tindakan ke nama pengguna database redshift_data_api_user untuk database apa pun di klaster. Nama pengguna ini harus sudah dibuat di database Anda.

  • Jika Anda menggunakan kredensyal sementara untuk mengautentikasi ke grup kerja tanpa server, konfirmasikan kebijakan tersebut mengizinkan penggunaan redshift-serverless:GetCredentials tindakan untuk mengambil grup kerja yang diberi tag dengan kunci. RedshiftDataFullAccess Pengguna database dipetakan 1:1 ke identitas sumber AWS Identity and Access Management (IAM). Misalnya, pengguna sample_user dipetakan ke pengguna databaseIAM:sample_user, dan IAM role sample_role dipetakan ke. IAMR:sample_role Untuk informasi selengkapnya tentang IAM identitas, lihat IAMIdentitas (pengguna, grup pengguna, dan peran) di IAM Panduan Pengguna.

Tautan berikut memberikan informasi lebih lanjut tentang AWS Identity and Access Management di Panduan IAM Pengguna.

Jalankan kueri pada klaster yang dimiliki oleh akun lain

Untuk menjalankan kueri pada klaster yang dimiliki oleh akun lain, akun pemilik harus menyediakan IAM peran yang API dapat diasumsikan oleh Data dalam akun panggilan. Misalnya, Akun B memiliki klaster yang perlu diakses oleh Akun A. Akun B dapat melampirkan kebijakan AWS yang dikelola AmazonRedshiftDataFullAccess ke IAM peran Akun B. Kemudian Akun B mempercayai Akun A menggunakan kebijakan kepercayaan seperti berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountID-of-account-A:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }

Terakhir, IAM peran Akun A harus dapat mengambil IAM peran Akun B.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountID-of-account-B:role/someRoleB" } }

Tentukan IAM peran yang membatasi sumber daya ke grup kerja Redshift Serverless dan kluster Amazon Redshift di Akun AWS

Anda dapat menentukan sumber daya ARNs dalam kebijakan berbasis identitas untuk mengontrol akses ke grup kerja Redshift Tanpa Server dan klaster Amazon Redshift di file. Akun AWS Contoh ini menunjukkan cara Anda membuat kebijakan yang mengizinkan akses ke Data hanya API untuk grup kerja dan kluster dalam yang ditentukan. Akun AWS

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*" }, { "Effect": "Allow", "Action": "redshift-data:*", "Resource": [ "arn:arn-partition:redshift-serverless:*:Akun AWS:workgroup/*", "arn:arn-partition:redshift:*:Akun AWS:cluster:*" ] } ] }

Mengonfigurasi IAM kebijakan yang membatasi akses ke informasi SQL pernyataan hanya untuk pemilik pernyataan

Secara default, Amazon Redshift Data API memperlakukan IAM peran yang digunakan saat memanggil ExecuteStatemet dan BatchExecuteStatement sebagai pemilik pernyataan. SQL Siapa pun yang diizinkan untuk mengambil peran dapat mengakses informasi tentang SQL pernyataan tersebut, termasuk hasilnya. Untuk membatasi akses informasi SQL pernyataan ke sesi IAM peran dengan pemilik tertentu, tambahkan kondisiredshift-data:statement-owner-iam-userid: "${aws:userid}". IAMKebijakan berikut membatasi akses.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } } ] }

Anda dapat menggunakan kondisi statement-owner-iam-userid denganCancelStatement,DescribeStatement,GetStatementResult, danListStatements. Untuk informasi selengkapnya, lihat Tindakan yang ditentukan oleh Data Amazon Redshift. API

Mengonfigurasi IAM kebijakan yang membatasi akses ke SQL hasil hanya untuk pemilik sesi

Secara default, Amazon Redshift Data API memperlakukan IAM peran yang digunakan saat memanggil ExecuteStatement dan BatchExecuteStatement sebagai pemilik sesi database yang menjalankan pernyataan. SQL Siapa pun yang diizinkan untuk mengambil peran dapat mengirimkan kueri ke sesi database. Untuk membatasi akses sesi ke sesi IAM peran dengan pemilik tertentu, tambahkan kondisi redshift-data:session-owner-iam-userid: "${aws:userid}". IAMKebijakan berikut membatasi akses.

IAMKebijakan berikut hanya memungkinkan pemilik sesi untuk mendapatkan hasil pernyataan. Kondisi session-owner-iam-userid ini digunakan untuk membatasi akses sumber daya ke yang ditentukanuserid.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:BatchExecuteStatement" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:session-owner-iam-userid": "${aws:userid}" } } } ] }

Anda dapat menggunakan kondisi session-owner-iam-userid dengan ExecuteStatement danBatchExecuteStatement. Untuk informasi selengkapnya, lihat Tindakan yang ditentukan oleh Data Amazon Redshift. API