Jalankan kueri sebagai peran IAM di Amazon QuickSight - Amazon QuickSight

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

Jalankan kueri sebagai peran IAM di Amazon QuickSight

Anda dapat meningkatkan keamanan data dengan menggunakan kebijakan akses berbutir halus daripada izin yang lebih luas untuk sumber data yang terhubung ke Amazon Athena, Amazon Redshift, atau Amazon S3. Anda mulai dengan membuat peran AWS Identity and Access Management (IAM) dengan izin yang akan diaktifkan saat seseorang atau API memulai kueri. Kemudian, QuickSight administrator Amazon atau pengembang menetapkan Peran IAM ke sumber data Athena atau Amazon S3. Dengan peran di tempat, setiap orang atau API yang menjalankan kueri memiliki izin yang tepat yang diperlukan untuk menjalankan kueri.

Berikut adalah beberapa hal yang perlu dipertimbangkan sebelum Anda berkomitmen untuk menerapkan peran run-as untuk meningkatkan keamanan data:

  • Mengartikulasikan bagaimana keamanan tambahan bekerja untuk keuntungan Anda.

  • Bekerja dengan QuickSight administrator Anda untuk mengetahui apakah menambahkan peran ke sumber data membantu Anda memenuhi tujuan atau persyaratan keamanan dengan lebih baik.

  • Tanyakan apakah jenis keamanan ini, untuk jumlah sumber data dan orang serta aplikasi yang terlibat, dapat didokumentasikan dan dikelola secara layak oleh tim Anda? Jika tidak, lalu siapa yang akan melakukan bagian dari pekerjaan itu?

  • Dalam organisasi terstruktur, temukan pemangku kepentingan dalam tim paralel di Operations, Development, dan IT Support. Mintalah pengalaman, saran, dan kesediaan mereka untuk mendukung rencana Anda.

  • Sebelum Anda meluncurkan proyek Anda, pertimbangkan untuk melakukan bukti konsep yang melibatkan orang-orang yang membutuhkan akses ke data.

Aturan berikut berlaku untuk menggunakan peran run-as dengan Athena, Amazon Redshift, dan Amazon S3:

  • Setiap sumber data hanya dapat memiliki satu yang terkait RoleArn. Konsumen sumber data, yang biasanya mengakses kumpulan data dan visual, dapat menghasilkan berbagai jenis kueri. Peran menempatkan batasan di mana kueri berfungsi dan mana yang tidak berfungsi.

  • ARN harus sesuai dengan peran IAM Akun AWS sama dengan QuickSight instance yang menggunakannya.

  • Peran IAM harus memiliki hubungan kepercayaan yang memungkinkan QuickSight untuk mengambil peran.

  • Identitas yang memanggil QuickSight API harus memiliki izin untuk meneruskan peran sebelum mereka dapat memperbarui RoleArn properti. Anda hanya perlu melewati peran saat membuat atau memperbarui peran ARN. Izin tidak dievaluasi ulang nanti. Demikian pula, izin tidak diperlukan ketika peran ARN dihilangkan.

  • Ketika peran ARN dihilangkan, sumber data Athena atau Amazon S3 menggunakan kebijakan peran dan cakupan di seluruh akun.

  • Ketika peran ARN hadir, peran seluruh akun dan kebijakan cakupan bawah keduanya diabaikan. Untuk sumber data Athena, izin Lake Formation tidak diabaikan.

  • Untuk sumber data Amazon S3, file manifes dan data yang ditentukan oleh file manifes harus dapat diakses menggunakan peran IAM.

  • String ARN perlu mencocokkan peran IAM yang ada di Akun AWS dan di Wilayah AWS mana data berada dan ditanyakan.

Saat QuickSight terhubung ke layanan lain di AWS, ia menggunakan peran IAM. Secara default, versi peran yang kurang terperinci ini dibuat oleh QuickSight untuk setiap layanan yang digunakannya, dan peran tersebut dikelola oleh Akun AWS administrator. Saat menambahkan ARN peran IAM dengan kebijakan izin khusus, Anda mengganti peran yang lebih luas untuk sumber data yang memerlukan perlindungan ekstra. Untuk informasi selengkapnya tentang kebijakan, lihat Membuat kebijakan yang dikelola pelanggan di Panduan Pengguna IAM.

Jalankan kueri dengan sumber data Athena

Gunakan API untuk melampirkan ARN ke sumber data Athena. Untuk melakukannya, tambahkan peran ARN di RoleArnproperti. AthenaParameters Untuk verifikasi, Anda dapat melihat peran ARN di kotak dialog Edit sumber data Athena. Namun, ARN Peran adalah bidang hanya-baca.

Muncul sumber data Edit Athena yang menampilkan peran ARN.

Untuk memulai, Anda memerlukan peran IAM khusus, yang kami tunjukkan dalam contoh berikut.

Perlu diingat bahwa contoh kode berikut hanya untuk tujuan pembelajaran. Gunakan contoh ini hanya dalam lingkungan pengembangan dan pengujian sementara, dan bukan di lingkungan produksi. Kebijakan dalam contoh ini tidak mengamankan sumber daya tertentu, yang harus ada dalam kebijakan yang dapat diterapkan. Juga, bahkan untuk pengembangan, Anda perlu menambahkan informasi AWS akun Anda sendiri.

Perintah berikut membuat peran baru yang sederhana dan melampirkan beberapa kebijakan yang memberikan izin. QuickSight

aws iam create-role \ --role-name TestAthenaRoleForQuickSight \ --description "Test Athena Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Setelah Anda mengidentifikasi atau membuat peran IAM untuk digunakan dengan setiap sumber data, lampirkan kebijakan dengan menggunakan. attach-role-policy

aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1

Setelah memverifikasi izin, Anda dapat menggunakan peran tersebut di sumber QuickSight data dengan membuat peran baru atau memperbarui peran yang sudah ada. Saat menggunakan perintah ini, perbarui Akun AWS ID dan Wilayah AWS untuk mencocokkan Anda sendiri.

Ingat, contoh cuplikan kode ini bukan untuk lingkungan produksi. AWS sangat menyarankan agar Anda mengidentifikasi dan menggunakan serangkaian kebijakan hak istimewa paling sedikit untuk kasus produksi Anda.

aws quicksight create-data-source --aws-account-id 222222222222 \ --region us-east-1 \ --data-source-id "athena-with-custom-role" \ --cli-input-json '{ "Name": "Athena with a custom Role", "Type": "ATHENA", "data sourceParameters": { "AthenaParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight" } } }'

Jalankan kueri dengan sumber data Amazon Redshift

Hubungkan data Amazon Redshift Anda dengan peran run-as untuk meningkatkan keamanan data Anda dengan kebijakan akses yang halus. Anda dapat membuat peran run-as untuk sumber data Amazon Redshift yang menggunakan jaringan publik atau koneksi VPC. Anda menentukan jenis koneksi yang ingin Anda gunakan di kotak dialog Edit sumber data Amazon Redshift. Peran run-as tidak didukung untuk sumber data Amazon Redshift Tanpa Server.

Gambar di bawah ini menunjukkan sumber data Amazon Redshift yang menggunakan jenis koneksi jaringan Publik.

Sumber data Edit Amazon S3 muncul yang menampilkan jenis koneksi.

Untuk memulai, Anda memerlukan peran IAM khusus, yang kami tunjukkan dalam contoh berikut. Perintah berikut membuat contoh peran baru dan melampirkan kebijakan yang memberikan izin. QuickSight

aws iam create-role \ --role-name TestRedshiftRoleForQuickSight \ --description "Test Redshift Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Setelah Anda mengidentifikasi atau membuat peran IAM untuk digunakan dengan setiap sumber data, lampirkan kebijakan denganattach-role-policy. Jika redshift:GetClusterCredentialsWithIAM izin dilampirkan ke peran yang ingin Anda gunakan, nilai untuk DatabaseUser dan DatabaseGroups bersifat opsional.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \ --policy-document file://redshift-get-cluster-credentials-policy.json aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "*" ] } ] }

Contoh di atas menciptakan sumber data yang menggunakan parameterRoleARN,DatabaseUser, dan DatabaseGroups IAM. Jika Anda ingin membuat koneksi hanya melalui RoleARN parameter IAM, lampirkan redshift:GetClusterCredentialsWithIAM izin ke peran Anda, yang ditunjukkan pada contoh di bawah ini.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentialsWithIAM" ], "Resource": [ "*" ] } ] }"

Setelah memverifikasi izin, Anda dapat menggunakan peran tersebut di sumber QuickSight data dengan membuat peran baru atau memperbarui peran yang sudah ada. Saat menggunakan perintah ini, perbarui ID AWS akun dan AWS Wilayah agar sesuai dengan perintah Anda.

aws quicksight create-data-source \ --region us-west-2 \ --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --cli-input-json file://redshift-data-source-iam.json \ redshift-data-source-iam.json is shown as below { "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "integ", "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "redshiftdemocluster", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "DatabaseGroups": ["admin_group", "guest_group", "guest_group_1"] } } }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Jika sumber data Anda menggunakan jenis koneksi VPC, gunakan konfigurasi VPC berikut.

{ "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam vpc", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "mydb", "Host": "vpcdemo.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "vpcdemo", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "AutoCreateDatabaseUser": true } } }, "VpcConnectionProperties": { "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222:vpcConnection/VPC Name" }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:222222222222:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Jika sumber data Anda menggunakan redshift:GetClusterCredentialsWithIAM izin dan tidak menggunakan DatabaseGroups parameter DatabaseUser atau, berikan akses peran ke beberapa atau semua tabel dalam skema. Untuk melihat apakah peran telah diberikan SELECT izin ke tabel tertentu, masukkan perintah berikut ke Editor Kueri Amazon Redshift.

SELECT u.usename, t.schemaname||'.'||t.tablename, has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission FROM pg_user u CROSS JOIN pg_tables t WHERE u.usename = 'IAMR:RoleName' AND t.tablename = tableName

Untuk informasi selengkapnya tentang SELECT tindakan di Editor Kueri Amazon Redshift, lihat PILIH.

Untuk memberikan SELECT izin ke peran, masukkan perintah berikut di Amazon Redshift Query Editor.

GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:Rolename";

Untuk informasi selengkapnya tentang GRANT tindakan di Editor Kueri Amazon Redshift, lihat GRANT.

Jalankan kueri dengan sumber data Amazon S3

Sumber data Amazon S3 berisi file manifes yang QuickSight digunakan untuk menemukan dan mengurai data Anda. Anda dapat mengunggah file manifes JSON melalui QuickSight konsol, atau Anda dapat memberikan URL yang mengarah ke file JSON di bucket S3. Jika Anda memilih untuk memberikan URL, QuickSight harus diberikan izin untuk mengakses file di Amazon S3. Gunakan konsol QuickSight administrasi untuk mengontrol akses ke file manifes dan data yang direferensikannya.

Dengan RoleArnproperti, Anda dapat memberikan akses ke file manifes dan data yang direferensikan melalui peran IAM kustom yang menggantikan peran seluruh akun. Gunakan API untuk melampirkan ARN ke file manifes sumber data Amazon S3. Untuk melakukannya, sertakan peran ARN di RoleArnproperti S3Parameters. Untuk verifikasi, Anda dapat melihat peran ARN di kotak dialog Edit sumber data S3. Namun, ARN Peran adalah bidang hanya-baca, seperti yang ditunjukkan pada gambar berikut.

Muncul sumber data Edit Amazon S3 yang menampilkan peran ARN.

Untuk memulai, buat file manifes Amazon S3. Kemudian, Anda dapat mengunggahnya ke Amazon QuickSight saat membuat kumpulan data Amazon S3 baru atau menempatkan file ke dalam bucket Amazon S3 yang berisi file data Anda. Lihat contoh berikut untuk melihat seperti apa file manifes:

{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }

Untuk petunjuk tentang cara membuat file manifes, lihatFormat yang didukung untuk file manifes Amazon S3.

Setelah Anda membuat file manifes dan menambahkannya ke bucket Amazon S3 atau mengunggahnya QuickSight, buat atau perbarui peran yang ada di IAM yang memberikan akses. s3:GetObject Contoh berikut menggambarkan cara memperbarui peran IAM yang ada dengan API: AWS

aws iam put-role-policy \ --role-name QuickSightAccessToS3RunAsRoleBucket \ --policy-name GrantS3RunAsRoleAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/*" } ] }'

Setelah kebijakan Anda memberikan s3:GetObject akses, Anda dapat mulai membuat sumber data yang menerapkan pembaruan put-role-policy ke file manifes sumber data Amazon S3.

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --data-source-id "s3-run-as-role-demo-source" \ --cli-input-json '{ "Name": "S3 with a custom Role", "Type": "S3", "DataSourceParameters": { "S3Parameters": { "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket", "ManifestFileLocation": { "Bucket": "s3-bucket-name", "Key": "manifest.json" } } } }'

Setelah memverifikasi izin, Anda dapat menggunakan peran tersebut di sumber QuickSight data, baik dengan membuat peran baru atau memperbarui peran yang sudah ada. Saat menggunakan perintah ini, pastikan untuk memperbarui Akun AWS ID dan Wilayah AWS mencocokkan Anda sendiri.