Definir perfis de banco de dados para conceder a usuários federados no Amazon Redshift sem servidor - Amazon Redshift

Definir perfis de banco de dados para conceder a usuários federados no Amazon Redshift sem servidor

Ao fazer parte de uma organização, você tem um conjunto de perfis associados. Por exemplo, você tem perfis para seu cargo, como programador e gerente. Seus perfis determinam a quais aplicações e dados você tem acesso. A maioria das organizações usa um provedor de identidades, como o Microsoft Active Directory, para atribuir perfis a usuários e grupos. O uso de perfis para controlar o acesso a recursos cresceu, pois reduz o gerenciamento de usuários individuais por parte das organizações.

Recentemente, o controle de acesso baseado em perfil foi introduzido no Amazon Redshift sem servidor. Usando perfis de banco de dados, você pode proteger o acesso a dados e objetos, como esquemas ou tabelas, por exemplo. Ou você pode usar perfis para definir um conjunto de permissões elevadas, como para um monitor de sistema ou administrador de banco de dados. Mas depois de conceder permissões de recursos aos perfis de banco de dados, há uma etapa adicional, que é conectar os perfis de um usuário da organização aos perfis do banco de dados. Você pode atribuir cada usuário aos seus perfis de banco de dados no login inicial executando instruções SQL, mas esse método é muito trabalhoso. Uma maneira mais fácil é definir os perfis de banco de dados a serem concedidos e enviá-los para o Amazon Redshift sem servidor. Isso tem a vantagem de simplificar o processo inicial de login.

Você pode enviar perfis para o Amazon Redshift sem servidor usando GetCredentials. Quando um usuário faz login pela primeira vez em um banco de dados do Amazon Redshift sem servidor, um usuário de banco de dados associado é criado e mapeado para os perfis de banco de dados correspondentes. Este tópico detalha o mecanismo para enviar perfis para o Amazon Redshift sem servidor.

O envio de perfis de banco de dados tem alguns casos de uso principais:

  • Quando um usuário faz login por meio de um provedor de identidades de terceiros, normalmente com a federação configurada, e envia os perfis por meio de uma etiqueta de sessão.

  • Quando um usuário faz login por meio das credenciais de login do IAM e seus perfis são enviados por meio de uma chave e um valor de etiqueta.

Para obter mais informações sobre o controle de acesso baseado em perfil, consulte Controle de acesso baseado em perfil (RBAC).

Configurar perfis de banco de dados

Antes de enviar perfis para o Amazon Redshift sem servidor, você deve configurar perfis em seu banco de dados e conceder a eles as permissões apropriadas nos recursos do banco de dados. Por exemplo, em um cenário simples, você pode criar um perfil de banco de dados chamado sales e conceder a ele acesso para consultar tabelas com dados de vendas. Para obter mais informações sobre como criar perfis de banco de dados e conceder permissões, consulte CREATE ROLE e GRANT.

Casos de uso para definir perfis de banco de dados que serão concedidos a usuários federados

Essas seções descrevem alguns casos de uso em que o envio de perfis de banco de dados para o Amazon Redshift sem servidor pode simplificar o acesso aos recursos do banco de dados.

Fazer login usando um provedor de identidades

O primeiro caso de uso pressupõe que sua organização tenha identidades de usuário em um serviço de gerenciamento de identidade e acesso. Esse serviço pode ser baseado na nuvem, como JumpCloud ou Okta, ou on-premises, como o Microsoft Active Directory. O objetivo é mapear automaticamente os perfis de um usuário do provedor de identidades para seus perfis de banco de dados quando esse usuário faz login em um cliente, como o editor de consultas V2, ou com um cliente JDBC. Para configurar isso, é necessário concluir algumas tarefas de configuração. Incluindo o seguinte:

  1. Configure a integração federada com o provedor de identidades (IdP) usando uma relação de confiança. Isso é um pré-requisito. Depois dessa configuração, o provedor de identidades será responsável por autenticar o usuário via declaração SAML e por fornecer credenciais de login. Para obter mais informações, consulte Integrar provedores de soluções SAML de terceiros com a AWS. Você também pode encontrar mais informações em Federação de acesso ao editor de consultas v2 do Amazon Redshift com os Serviços de Federação do Active Directory (AD FS) ou Federação de acesso de logon único ao editor de consultas v2 do Amazon Redshift com Okta.

  2. O usuário deve ter as seguintes permissões:

    • GetCredentials: fornece credenciais para autorização temporária de login no Amazon Redshift sem servidor.

    • sts:AssumeRoleWithSAML: fornece um mecanismo para vincular um armazenamento ou diretório de identidades corporativas ao acesso baseado em perfis da AWS.

    • sts:TagSession: permissão para a ação de sessão de etiquetas, na entidade principal do provedor de identidades.

    Nesse caso, AssumeRoleWithSAML retorna um conjunto de credenciais de segurança para usuários que foram autenticados via resposta autenticada por SAML. Essa operação fornece um mecanismo para vincular um armazenamento ou diretório de identidades ao acesso baseado em perfis da AWS sem credenciais específicas do usuário. Para usuários com permissão para AssumeRoleWithSAML, o provedor de identidades é responsável por gerenciar a declaração SAML usada para enviar as informações do perfil.

    Como prática recomendada, anexe políticas de permissões a um perfil do IAM e, depois, atribua-as a usuários e grupos, conforme necessário. Para obter mais informações, consulte Gerenciamento de identidade e acesso no Amazon Redshift.

  3. Você configura a etiqueta RedshiftDbRoles com os valores de perfil separados por dois pontos, no formato role1:role2. Por exemplo, manager:engineer. Eles podem ser recuperados de uma implementação de etiqueta de sessão configurada em seu provedor de identidades. A solicitação de autenticação SAML envia os perfis de forma programática. Para obter mais informações sobre o envio de etiquetas de sessão, consulte Enviar etiquetas de sessão no AWS STS.

    Nos casos em que você envio um nome de perfil que não existe no banco de dados, ele é ignorado.

Nesse caso de uso, quando um usuário faz login usando uma identidade federada, seus perfis são enviados na solicitação de autorização por meio da chave e do valor da etiqueta de sessão. Depois da autorização, GetCredentials envia os perfis para o banco de dados. Após uma conexão bem-sucedida, os perfis de banco de dados são mapeadas e o usuário pode executar tarefas de banco de dados correspondentes ao perfil. A parte essencial da operação é que a etiqueta de sessão RedshiftDbRoles receba os perfis na solicitação de autorização inicial. Para obter mais informações sobre o envio de etiquetas de sessão, consulte Enviar etiquetas de sessão usando AssumeRoleWithSAML.

Fazer login usando credenciais do IAM

No segundo caso de uso, os perfis podem ser enviados para um usuário e ele pode acessar uma aplicação cliente de banco de dados por meio de credenciais do IAM.

  1. Nesse caso, o usuário que faz login deve receber permissões de política para as seguintes ações:

    • tag:GetResources: retorna os recursos marcados associados a etiquetas especificadas.

    • tag:GetTagKeys: retorna as chaves de etiqueta atualmente em uso.

      Como prática recomendada, anexe políticas de permissões a um perfil do IAM e, depois, atribua-as a usuários e grupos, conforme necessário. Para obter mais informações, consulte Gerenciamento de identidade e acesso no Amazon Redshift.

  2. Permissões também são necessárias para acessar o serviço de banco de dados, como o Amazon Redshift sem servidor.

  3. Para esse caso de uso, configure os valores das etiquetas para os perfis no AWS Identity and Access Management. Você pode optar por editar etiquetas e criar uma chave de etiqueta chamada redshiftDBRoles com uma string de valor de etiqueta que contém os perfis. Por exemplo, manager:engineer.

Quando um usuário faz login, seu perfil é adicionado à solicitação de autorização e enviado para o banco de dados. Ele é mapeado para um perfil de banco de dados existente.

Recursos adicionais do

Conforme mencionado nos casos de uso, você pode configurar a relação de confiança entre seu IdP e a AWS. Para obter mais informações, consulte Configurar o IdP do SAML 2.0 com confiança da parte dependente e incluir declarações.