Pré-requisitos para gerenciar namespaces do Amazon Redshift no AWS Glue Data Catalog - AWS Lake Formation

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Pré-requisitos para gerenciar namespaces do Amazon Redshift no AWS Glue Data Catalog

  1. Crie um administrador de data lake — crie uma função do IAM autorizada a aceitar o convite do namespace, crie os AWS Glue Data Catalog objetos (catálogos, bancos de dados, tabelas/visualizações) e conceda permissões do Lake Formation a outros usuários.

    Para step-by-step obter instruções sobre como criar um administrador de data lake, consulteCrie um administrador de data lake.

  2. Atualize as permissões do administrador do data lake.

    Além das permissões, o administrador do data lake precisa das seguintes permissões para aceitar um convite de namespace do Amazon Redshift no Lake Formation, criar ou atualizar os recursos do Data Catalog e habilitar o acesso ao data lake:

    JSON
    { "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. Se o perfil do IAM usado para criar catálogos federados não for de administrador de data lake, você precisará conceder a permissão Create catalog ao perfil.

    Como criar criadores de catálogos
    1. Abra o console do Lake Formation em https://console.aws.amazon.com/lakeformation/.

    2. Escolha Perfis e tarefas administrativas em Administração.

    3. Selecione Conceder.

    4. Na tela Conceder permissões, selecione um usuário ou um perfil do IAM.

    5. Selecione a permissão Criar catálogo.

    6. Você também pode conceder a permissão Criar catálogo. A permissão para concessão permite que o criador de catálogos conceda a permissão Create catalog a outras entidades principais.

    7. Selecione Conceder.

    AWS CLI exemplo de concessão de permissões para criar um catálogo federado.

    aws lakeformation grant-permissions \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/Admin" }, "Resource": { "Catalog": { } }, "Permissions": [ "CREATE_CATALOG", "DESCRIBE" ] }'
  4. Crie um perfil de administrador somente leitura para descobrir os catálogos federados do Amazon Redshift no Data Catalog do Editor de Consultas V2 do Amazon Redshift.

    Para consultar as tabelas do Amazon Redshift no catálogo federado do Editor de Consultas V2 do Amazon Redshift, a política de perfil de administrador somente leitura deve conter o ARN do perfil vinculado a serviços AWSServiceRoleForRedshift do Amazon Redshift.

    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. Crie um perfil de transferência de dados que o Amazon Redshift possa assumir em seu nome para transferir dados de e para o bucket do Amazon S3.

    Ao habilitar o acesso ao data lake para mecanismos de consulta compatíveis com Apache Iceberg, como Athena, Amazon EMR na EC2 Amazon, para acessar os recursos do Amazon Redshift no catálogo de dados, você precisa criar uma função do IAM com as permissões necessárias para realizar a transferência de dados de e para o bucket do Amazon S3.

    JSON
    { "Version":"2012-10-17", "Id": "glue-enable-datalake-access", "Statement": [{ "Sid": "DataTransferRolePolicy", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "kms:GenerateDataKey", "kms:Decrypt"], "Resource": "*" } ] }
  6. Adicione a seguinte política de confiança à função de transferência de dados AWS Glue e aos serviços do Amazon Redshift para assumir a função de transferir dados de e para o bucket do Amazon S3.

    JSON
    { "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "glue.amazonaws.com" ] }, "Action": "sts:AssumeRole" }] }
  7. Adicione a seguinte política de chaves à AWS KMS chave se você estiver usando uma chave gerenciada pelo cliente para criptografar os dados no cluster/namespace do Amazon Redshift. Substitua o número da conta por um número de AWS conta válido e especifique o nome da função de transferência de dados. Por padrão, os dados no cluster do Amazon Redshift são criptografados com uma chave do KMS. O Lake Formation oferece uma opção para criar sua chave do KMS personalizada para criptografia. Se você estiver usando uma chave gerenciada pelo cliente, deverá adicionar políticas de chave específicas à chave.

    Para obter mais informações sobre como gerenciar as permissões de uma chave gerenciada pelo cliente, consulte Chaves gerenciadas pelo cliente.

    JSON
    { "Version":"2012-10-17", "Id": "auto-redshift-3", "Statement": [{ "Sid": "RedshiftAllowAccessPolicy", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "redshift.us-east-1.amazonaws.com" } } }, { "Sid": "RedshiftServerlessAllowAccessPolicy", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "redshift-serverless.us-east-1.amazonaws.com" } } }, { "Sid": "DirectMetadataAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" }, { "Sid": "GenerateDataKeyDecryptDataTransferRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/data-transfer-role-name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" } } } ] }