Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Merantai peran IAM di Amazon Redshift
Saat Anda melampirkan peran ke klaster, klaster Anda dapat mengambil peran tersebut untuk mengakses Amazon S3, Amazon Athena AWS Glue, AWS Lambda dan atas nama Anda. Jika peran yang dilampirkan ke klaster Anda tidak memiliki akses ke sumber daya yang diperlukan, Anda dapat merantai peran lain, mungkin milik akun lain. Cluster Anda kemudian sementara mengasumsikan peran berantai untuk mengakses data. Anda juga dapat memberikan akses lintas akun dengan merantai peran. Setiap peran dalam rantai mengasumsikan peran berikutnya dalam rantai, sampai cluster mengambil peran di akhir rantai. Jumlah maksimum peran IAM yang dapat Anda kaitkan tunduk pada kuota. Untuk informasi selengkapnya, lihat kuota “Peran IAM klaster untuk Amazon Redshift untuk mengakses layanan AWS lain” di. Kuota untuk objek Amazon Redshift
Misalnya, Perusahaan A ingin mengakses data dalam bucket Amazon S3 milik Perusahaan B. Perusahaan A menciptakan peran AWS layanan untuk Amazon Redshift RoleA
bernama dan menempelkannya ke klaster mereka. Perusahaan B membuat peran bernama RoleB
yang diizinkan untuk mengakses data di bucket Perusahaan B. Untuk mengakses data dalam bucket B Perusahaan, Perusahaan A menjalankan perintah COPY menggunakan iam_role
parameter yang berantai RoleA
danRoleB
. Selama operasi COPY, untuk RoleA
sementara mengasumsikan RoleB
untuk mengakses bucket Amazon S3.
Untuk peran rantai, Anda membangun hubungan kepercayaan antara peran. Peran yang mengasumsikan peran lain (misalnya,RoleA
) harus memiliki kebijakan izin yang memungkinkannya mengambil peran berantai berikutnya (misalnya,). RoleB
Pada gilirannya, peran yang meneruskan izin (RoleB
) harus memiliki kebijakan kepercayaan yang memungkinkannya meneruskan izinnya ke peran berantai sebelumnya (). RoleA
Untuk informasi selengkapnya, lihat Menggunakan peran IAM di Panduan Pengguna IAM.
Peran pertama dalam rantai harus menjadi peran yang melekat pada cluster. Peran pertama, dan setiap peran berikutnya yang mengambil peran berikutnya dalam rantai, harus memiliki kebijakan yang mencakup pernyataan tertentu. Pernyataan ini memiliki Allow
efek pada sts:AssumeRole
tindakan dan Nama Sumber Daya Amazon (ARN) dari peran berikutnya dalam suatu Resource
elemen. Dalam contoh kami, RoleA
memiliki kebijakan izin berikut yang memungkinkannya untuk berasumsiRoleB
, dimiliki oleh AWS
akun210987654321
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::210987654321:role/RoleB" } ] }
Peran yang beralih ke peran lain harus membangun hubungan kepercayaan dengan peran yang mengambil peran atau dengan AWS akun yang memiliki peran tersebut. Dalam contoh kami, RoleB
memiliki kebijakan kepercayaan berikut untuk membangun hubungan kepercayaan denganRoleA
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::role/RoleA" } } ] }
Kebijakan kepercayaan berikut menetapkan hubungan kepercayaan dengan pemilikRoleA
, AWS akun123456789012
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
catatan
Untuk membatasi otorisasi rantai peran untuk pengguna tertentu, tentukan kondisi. Untuk informasi selengkapnya, lihat Membatasi akses ke peran IAM.
Saat menjalankan perintah UNLOAD, COPY, CREATE EXTERNAL FUNCTION, atau CREATE EXTERNAL SCHEMA, Anda merantai peran dengan menyertakan daftar peran yang dipisahkan koma dalam ARNs parameter. iam_role
Berikut ini menunjukkan sintaks untuk peran rantai dalam parameter. iam_role
unload ('select * from venue limit 10') to 's3://acmedata/redshift/venue_pipe_' IAM_ROLE 'arn:aws:iam::<
aws-account-id-1
>:role/<role-name-1
>[,arn:aws:iam::<aws-account-id-2
>:role/<role-name-2
>][,...]';
catatan
Seluruh rantai peran tertutup dalam tanda kutip tunggal dan tidak boleh berisi spasi.
Dalam contoh berikut, RoleA
dilampirkan ke cluster milik AWS akun123456789012
. RoleB
, yang termasuk dalam akun210987654321
, memiliki izin untuk mengakses bucket bernamas3://companyb/redshift/
. Contoh rantai berikut RoleA
dan RoleB
untuk MEMBONGKAR data ke bucket s3://companyb/redshift/.
unload ('select * from venue limit 10') to 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Contoh berikut menggunakan perintah COPY untuk memuat data yang diturunkan dalam contoh sebelumnya.
copy venue from 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Dalam contoh berikut, CREATE EXTERNAL SCHEMA menggunakan peran berantai untuk mengambil peran. RoleB
create external schema spectrumexample from data catalog database 'exampledb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Dalam contoh berikut, CREATE EXTERNAL FUNCTION menggunakan peran berantai untuk mengambil peranRoleB
.
create external function lambda_example(varchar) returns varchar volatile lambda 'exampleLambdaFunction' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';