Por que meu usuário do IAM tem acesso aos recursos do Catálogo de Dados mesmo depois de suas permissões serem restritas no Lake Formation?

5 minuto de leitura
0

Eu restringi as permissões de tabela para um usuário no AWS Lake Formation (por exemplo, SELECT com ExcludedColumnNames). No entanto, o usuário ainda pode consultar a tabela usando o Amazon Athena.

Breve descrição

A Lake Formation concede a permissão Super ao grupo IAMAllowedPrincipals por padrão. Essa permissão se aplica a todos os recursos existentes do Catálogo de Dados do AWS Glue. Se o controle de acesso Usar somente IAM estiver ativado, o Lake Formation também concederá a permissão Super para novos recursos. Isso significa que as políticas do AWS Identity and Access Management (IAM) controlam o acesso aos recursos do Catálogo de Dados e às localizações do Amazon Simple Storage Service (Amazon S3). Para mais informações, consulte Sobre a atualização para o modelo de permissões do Lake Formation.

Para restringir o acesso, altere as configurações padrão para garantir que você esteja usando o modelo de permissões do Lake Formation para recursos novos e existentes do Catálogo de Dados.

Resolução

Para atualizar as configurações de segurança de todos os novos bancos de dados e tabelas em seu data lake, consulte Alterar configurações do Catálogo de Dados.

Para atualizar as configurações de segurança somente para determinados novos recursos, crie o recurso e, em seguida, atualize as permissões somente nesse recurso. Para obter mais informações, consulte Proteger os recursos existentes do Catálogo de Dados.

A alteração nas configurações de segurança padrão se aplica somente aos recursos criados após a atualização das configurações de segurança.

Para alterar as configurações de segurança dos bancos de dados existentes, remova explicitamente as permissões de IAMAllowedPrincipals em cada banco de dados fazendo o seguinte:

  1. Abra o console do AWS Lake Formation.
  2. No painel de navegação, em Catálogo de dados, escolha Bancos de dados.
  3. Selecione o círculo ao lado do banco de dados que você deseja atualizar.
  4. Escolha Ações, em seguida, escolha Editar.
  5. Em Permissões padrão para tabelas recém-criadas, desmarque Usar somente o controle de acesso do IAM para novas tabelas neste banco de dados.
  6. Escolha Salvar.
  7. Na página Bancos de dados, certifique-se de que o banco de dados esteja selecionado. Escolha Ações, em seguida, escolha Revogar.
  8. Na caixa de diálogo Revogar permissões, na lista de usuários e funções do IAM, role até o título Grupo e escolha IAMAllowedPrincipals.
  9. Em Permissões do banco de dados, certifique-se de que Super esteja selecionado e escolha Revogar.

Para alterar as configurações de segurança das tabelas existentes, remova explicitamente as permissões de IAMAllowedPrincipals em cada tabela fazendo o seguinte:

  1. Abra o console do AWS Lake Formation.
  2. No painel de navegação, selecione Tópicos.
  3. Na página Tabelas, selecione o círculo ao lado da tabela que você deseja atualizar.
  4. Escolha Ações, em seguida, escolha Revogar.
  5. Na caixa de diálogo Revogar permissões, na lista de usuários e funções do IAM, role até o título Grupo e escolha IAMAllowedPrincipals
  6. Em Permissões da tabela, certifique-se de que Super esteja selecionado e escolha Revogar

Observação: certifique-se de que o caminho do Amazon S3 para o banco de dados ou a tabela esteja registrado no Lake Formation.

Depois de alterar as configurações de segurança dos recursos existentes, conceda permissões de tabela ao usuário ou função do IAM. Você pode fazer isso usando o console do Lake Formation ou a AWS Command Line Interface (AWS CLI).

Observação: se você receber erros ao executar comandos da AWS CLI, verifique se está utilizando a versão mais recente da AWS CLI.

Veja a seguir exemplos de comandos da CLI que concedem a permissão SELECT em colunas específicas:

Permita SELECT somente em uma coluna específica:

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT"  --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnNames": ["prodcode","location","period","withdrawals"]}}'

Excluir colunas (permita SELECT em todas as colunas, exceto na coluna especificada em ExcludedColumnNames):

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT"  --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnWildcard": {"ExcludedColumnNames": ["location"]}}}'

Para realizar operações de Lake Formation, as entidades principais devem ter permissões de Lake Formation e IAM. Além disso, para consultar a tabela no Athena, o usuário também deve ter permissão para executar consultas do Athena. Por exemplo, para consultar uma tabela do Athena quando o Lake Formation está gerenciando permissões, o usuário deve ter as seguintes permissões do IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "minimumAWSGlueLakeFormationAthenapermissiontorunselectqueryontable",
            "Effect": "Allow",
            "Action": [
                "lakeformation:GetDataAccess",
                "glue:SearchTables",
                "glue:GetTables",
                "glue:GetPartitions",
                "glue:GetDatabases",
                "glue:GetTable",
                "glue:GetDatabase",
                "athena:GetNamespace",
                "athena:ListWorkGroups",
                "athena:GetCatalogs",
                "athena:GetNamespaces",
                "athena:GetExecutionEngine",
                "athena:GetExecutionEngines",
                "athena:GetTables",
                "athena:GetTable"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AthenaPermissionToRunQueryInAWorkergroup",
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryResults",
                "athena:DeleteNamedQuery",
                "athena:GetNamedQuery",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResultsStream",
                "athena:ListNamedQueries",
                "athena:CreateNamedQuery",
                "athena:GetQueryExecution",
                "athena:BatchGetNamedQuery",
                "athena:BatchGetQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:*:*:workgroup/*"
            ]
        },
        {
            "Sid": "allowS3PermissionToSaveAthenaQueryResults",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:CreateBucket",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::aws-athena-query-results-*"
            ]
        }
    ]
}

Informações relacionadas

Alterando as configurações de segurança padrão do seu data lake

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos