Prasyarat untuk mengelola ruang nama Amazon Redshift di AWS Glue Data Catalog - AWS Lake Formation

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

Prasyarat untuk mengelola ruang nama Amazon Redshift di AWS Glue Data Catalog

  1. Buat administrator data lake - Buat peran IAM yang diizinkan untuk menerima undangan namespace, dan membuat AWS Glue Data Catalog objek (katalog, database, tabel/tampilan), dan berikan izin Lake Formation ke pengguna lain.

    Untuk step-by-step petunjuk tentang cara membuat administrator danau data, lihatBuat administrator danau data.

  2. Perbarui izin administrator danau data.

    Selain izin administrator data lake, administrator data lake memerlukan izin berikut untuk menerima undangan namespace Amazon Redshift di Lake Formation, membuat atau memperbarui sumber daya Katalog Data, dan mengaktifkan akses data lake:

    { "Version": "2012-10-17", "Id": "glue-enable-datalake-access", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:AssociateDataShareConsumer", "redshift:DescribeDataSharesForConsumer", "redshift:DescribeDataShares", "redshift-serverless:CreateNamespace", "redshift-serverless:CreateWorkgroup", "redshift-serverless:DeleteNamespace", "redshift-serverless:DeleteWorkgroup", "ec2:DescribeAccountAttributes", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "s3:createBucket", "s3:deleteBucket", "s3:putBucketPolicy", "s3:putEncryptionConfiguration", "s3:putLifecycleConfiguration", "s3:putBucketVersioning", "iam:CreateRole" ], "Resource": "*" } ] } { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/data transfer role name", "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } }
  3. Jika peran IAM yang digunakan untuk membuat katalog federasi bukan administrator data lake, Anda harus memberikan izin kepada peran tersebut. Create catalog

    Untuk membuat pembuat katalog
    1. Buka konsol Lake Formation di https://console.aws.amazon.com/lakeformation/.

    2. Pilih peran dan tugas administratif di bawah Administrasi.

    3. PilihIzin.

    4. Pada layar Hibah izin, pilih pengguna atau peran IAM.

    5. Pilih Buat izin katalog.

    6. Secara opsional, Anda juga dapat memberikan izin Buat katalog yang dapat diberikan. Izin yang dapat diberikan memungkinkan pembuat katalog untuk memberikan Create catalog izin kepada prinsipal lain.

    7. PilihIzin.

    AWS CLI contoh untuk memberikan izin untuk membuat katalog federasi.

    aws lakeformation grant-permissions \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/Admin" }, "Resource": { "Catalog": { } }, "Permissions": [ "CREATE_CATALOG", "DESCRIBE" ] }'
  4. Buat peran administrator hanya baca untuk menemukan katalog federasi Amazon Redshift di Katalog Data dari Amazon Redshift Query Editor v2.

    Untuk menanyakan tabel Amazon Redshift di katalog federasi dari Amazon Redshift Query Editor v2, pastikan bahwa kebijakan peran administrator Baca saja berisi ARN untuk peran terkait layanan Amazon Redshift. AWSServiceRoleForRedshift

    aws lakeformation put-data-lake-settings --region us-east-1 \ --data-lake-settings \ '{ "DataLakeAdmins": [{"DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/Admin"}], "ReadOnlyAdmins":[{"DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift"}], "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "Parameters":{"CROSS_ACCOUNT_VERSION":"4","SET_CONTEXT":"TRUE"} }'
  5. Buat peran transfer data yang dapat diasumsikan Amazon Redshift atas nama Anda untuk mentransfer data ke dan dari bucket Amazon S3.

    Saat Anda mengaktifkan akses data lake untuk mesin kueri yang kompatibel dengan Apache Iceberg seperti Athena, Amazon EMR di Amazon untuk mengakses EC2 sumber daya Amazon Redshift di Katalog Data, Anda perlu membuat peran IAM dengan izin yang diperlukan untuk melakukan transfer data ke dan dari bucket Amazon S3.

    { "Version": "2012-10-17", "Id": "glue-enable-datalake-access", "Statement": [{ "Sid": "DataTransferRole policy", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "kms:GenerateDataKey", "kms:Decrypt"], "Resource": "*" } ] }
  6. Tambahkan kebijakan kepercayaan berikut ke peran transfer data untuk AWS Glue dan layanan Amazon Redshift untuk mengambil peran mentransfer data ke dan dari bucket Amazon S3.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "sts:AssumeRole" }] }
  7. Tambahkan kebijakan kunci berikut ke kunci jika Anda menggunakan AWS KMS kunci yang dikelola pelanggan untuk mengenkripsi data di klaster/namespace Amazon Redshift. Ganti nomor akun dengan nomor AWS akun yang valid, dan tentukan nama peran transfer data. Secara default, data di cluster Amazon Redshift dienkripsi menggunakan kunci KMS. Lake Formation menyediakan opsi untuk membuat kunci KMS kustom Anda untuk enkripsi. Jika Anda menggunakan kunci yang dikelola pelanggan, Anda harus menambahkan kebijakan kunci tertentu ke kunci tersebut.

    Untuk informasi selengkapnya tentang mengelola izin kunci terkelola pelanggan, lihat Kunci terkelola pelanggan.

    { "Version": "2012-10-17", "Id": "auto-redshift-3", "Statement": [ { "Sid": "Allow access through RedShift for all principals in the account that are authorized to use RedShift", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "123456789012", "kms:ViaService": "redshift.us-east-1.amazonaws.com" } } }, { "Sid": "Allow access through RedShift-Serverless for all principals in the account that are authorized to use RedShift-Serverless", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "123456789012", "kms:ViaService": "redshift-serverless.us-east-1.amazonaws.com" } } }, { "Sid": "Allow direct access to key metadata to the account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" }, { "Sid": "Allow GenerateDataKey + Decrypt to the DataTransferRole via s3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012 :role/data-transfer-role-name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" } } ] }