Configurar o Kerberos para instâncias de banco de dados do Oracle - Amazon Relational Database Service

Configurar o Kerberos para instâncias de banco de dados do Oracle

Use o AWS Directory Service for Microsoft Active Directory, também chamado de AWS Managed Microsoft AD, para configurar a autenticação Kerberos para uma instância de banco de dados do Oracle. Para configurar a autenticação Kerberos, conclua as seguintes etapas:

nota

Durante a configuração, o RDS cria um usuário de banco de dados Oracle chamado managed_service_user@example.com com o privilégio CREATE SESSION, onde example.com é seu nome de domínio. Este usuário corresponde ao usuário que o Directory Service cria dentro do Active Directory gerenciado. Periodicamente, o RDS usa as credenciais fornecidas pelo Directory Service para efetuar logon no banco de dados Oracle. Depois, o RDS destrói imediatamente o cache do tíquete.

Etapa 1: Criar um diretório usando o AWS Managed Microsoft AD

O AWS Directory Service cria um Active Directory totalmente gerenciado na Nuvem AWS. Ao criar um diretório do AWS Managed Microsoft AD, o AWS Directory Service cria dois controladores de domínio e servidores do Domain Name System (DNS) em seu nome. Os servidores do diretório são criados em sub-redes diferentes em uma VPC. Essa redundância ajuda a garantir que o diretório permaneça acessível mesmo se ocorrer uma falha.

Ao criar um diretório do AWS Managed Microsoft AD, o AWS Directory Service executa as seguintes tarefas em seu nome:

  • Configura um Active Directory dentro da VPC.

  • Cria uma conta de administrador do diretório com o nome de usuário Admin e a senha especificada. Use essa conta para gerenciar seu diretório.

    nota

    Salve essa senha. O AWS Directory Service não a armazena. Você pode redefini-la, mas não recuperá-la.

  • Cria um grupo de segurança para os controladores do diretório.

Quando você inicia o AWS Managed Microsoft AD, o AWS cria uma Unidade organizacional (UO) que contém todos os objetos do diretório. Essa OU, que tem o nome NetBIOS que você digitou quando criou o diretório, está localizada na raiz do domínio. A raiz do domínio é controlada e de propriedade da AWS.

A conta admin que foi criada com o diretório do AWS Managed Microsoft AD tem permissões para as atividades administrativas mais comuns de sua OU:

  • Criar, atualizar ou excluir usuários

  • Adicionar recursos ao domínio, como servidores de arquivos ou de impressão, e atribuir permissões para esses recursos aos usuários na UO

  • Criar OUs adicionais e contêineres

  • Delegar autoridade

  • Restaurar objetos excluídos da Lixeira do Active Directory

  • Execute os módulos AD e DNS do Windows PowerShell no Active Directory Web Service

A conta admin também tem direitos para executar as seguintes atividades em todo o domínio:

  • Gerenciar configurações de DNS (adicionar, remover ou atualizar registros, zonas e encaminhadores)

  • Visualizar logs de eventos de DNS

  • Visualizar logs de eventos de segurança

Para criar o diretório, use a API AWS Management Console, AWS CLI ou AWS Directory Service. Certifique-se de abrir as portas de saída relevantes no security group de diretórios para que o diretório possa se comunicar com a instância de banco de dados Oracle.

Como criar um diretório com AWS Managed Microsoft AD
  1. Faça login no AWS Management Console e abra o console do AWS Directory Service em https://console.aws.amazon.com/directoryservicev2/.

  2. No painel de navegação, escolha Directories (Diretórios) e escolha Set up directory (Configurar diretório).

  3. Escolha AWS Managed Microsoft AD. O AWS Managed Microsoft AD é a única opção que você pode usar atualmente com o Amazon RDS.

  4. Insira as seguintes informações:

    Nome do DNS do diretório

    O nome completo do diretório, como corp.example.com.

    Nome de NetBIOS do diretório

    O nome curto do diretório, como CORP.

    Descrição do diretório

    (Opcional) Uma descrição do diretório.

    Senha do Admin

    A senha do administrador do diretório. O processo de criação do diretório cria uma conta de administrador com o nome de usuário Admin e essa senha.

    A senha do administrador do diretório e não pode incluir a palavra "admin". A senha diferencia letras maiúsculas de minúsculas e deve ter entre 8 e 64 caracteres. Ela também precisa conter pelo menos um caractere de três das quatro categorias a seguir:

    • Letras minúsculas (a–z)

    • Letras maiúsculas (A–Z)

    • Números (0–9)

    • Caracteres não alfanuméricos (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    Confirmar senha

    A senha do administrador digitada novamente.

  5. Escolha Next (Próximo).

  6. Insira as seguintes informações na seção Networking (Rede) e escolha Next (Próximo):

    VPC

    A VPC do diretório. Crie a instância de banco de dados Oracle nessa mesma VPC.

    Sub-redes

    Sub-redes para os servidores do diretório. As duas sub-redes deve estar em diferentes zonas de disponibilidade.

  7. Revise as informações do diretório e faça as alterações necessárias. Quando as informações estiverem corretas, selecione Create directory (Criar diretório).

    Página de detalhes do diretório durante a criação

A criação do diretório leva vários minutos. Depois que o diretório tiver sido criado com sucesso, o valor de Status muda para Active (Ativo).

Para ver informações sobre o diretório, selecione o nome do diretório na listagem de diretórios. Anote o valor do Directory ID (ID de diretório) pois você precisará desse valor ao criar ou modificar a instância de banco de dados Oracle.

Página de detalhes do diretório

Etapa 2: Criar uma confiança

Se você planeja usar somente o AWS Managed Microsoft AD, vá para Etapa 3: Configurar as permissões do IAM para o Amazon RDS.

Para habilitar a autenticação Kerberos usando seu Active Directory autogerenciado, você deve criar uma relação de confiança de floresta entre seu Active Directory autogerenciado e o AWS Managed Microsoft AD criado na etapa anterior. A relação de confiança pode ser unidirecional, na qual o AWS Managed Microsoft AD confia no Active Directory autogerenciado. A confiança também pode ser bidirecional, onde os dois Active Directories confiam um no outro. Para ter mais informações sobre como configurar confianças de floresta usando o AWS Directory Service, consulte Quando criar um relacionamento de confiança no Guia de administração do AWS Directory Service.

Etapa 3: Configurar as permissões do IAM para o Amazon RDS

Para chamar o AWS Directory Service para você, o Amazon RDS precisa de um perfil do IAM que use a política gerenciada do IAM AmazonRDSDirectoryServiceAccess. Esta função permite que o Amazon RDS faça chamadas ao AWS Directory Service.

nota

Para o perfil permitir o acesso, o endpoint do AWS Security Token Service (AWS STS) deve estar ativado na Região da AWS correta de sua Conta da AWS. Os endpoints do AWS STS são ativados por padrão em todas as Regiões da AWS e você pode usá-los sem precisar tomar medidas adicionais. Para ter mais informações, consulte Ativar e desativar o AWS STS em uma Região da AWS no Guia do usuário do IAM.

Criar um perfil do IAM

Quando você cria uma instância de banco de dados usando o AWS Management Console e o usuário do console tem a permissão iam:CreateRole, o console cria essa rds-directoryservice-kerberos-access-role automaticamente. Caso contrário, é necessário criar a função do IAM manualmente. Ao criar um perfil do IAM, escolha Directory Service e associe a política gerenciada AmazonRDSDirectoryServiceAccess da AWS a ele.

Para ter mais informações sobre como criar funções do IAM para um serviço, consulte o tópico sobre como Criar uma função para delegar permissões a um serviço da AWS, no Guia do usuário do IAM.

nota

A função do IAM usada para a autenticação do Windows para RDS para o Microsoft SQL Server não pode ser usada para o RDS for Oracle.

Criar uma política de confiança do IAM manualmente

Se preferir, você poderá criar políticas de recursos com as permissões exigidas em vez de usar a política gerenciada do IAM AmazonRDSDirectoryServiceAccess. Especifique directoryservice.rds.amazonaws.com e rds.amazonaws.com como entidades principais.

Recomendamos o uso das chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em políticas de recursos para limitar as permissões que o Amazon RDS concede a outro serviço para um recurso específico. A maneira mais eficaz de se proteger contra o problema do substituto confuso é usar a chave de contexto de condição global aws:SourceArn com o ARN completo do recurso do Amazon RDS. Para ter mais informações, consulte Prevenção do problema do substituto confuso entre serviços.

O exemplo a seguir mostra como é possível usar as chaves de contexto de condição global aws:SourceArn e aws:SourceAccount no Amazon RDS, a fim de evitar o problema do substituto confuso.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

Em relação a regiões de adesão, você também deve incluir uma entidade principal de serviço para essa região na forma de directoryservice.rds.region_name.amazonaws.com. Por exemplo, na região África (Cidade do Cabo), use a seguinte política de confiança:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "directoryservice.rds.af-south-1.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:rds:af-south-1:123456789012:db:mydbinstance" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

O perfil também deve ter a política do IAM a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

Etapa 4: Criar e configurar usuários

É possível criar usuários com a ferramenta Usuários e computadores do Active Directory, que faz parte dos Serviços de Domínio Active Directory e das ferramentas do Active Directory Lightweight Directory Services. Nesse caso, os usuários são pessoas ou entidades individuais que têm acesso ao diretório.

Para criar usuários em um diretório do AWS Directory Service, é necessário estar conectado a uma instância do Amazon EC2 baseada no Windows que seja membro do diretório do AWS Directory Service. Ao mesmo tempo, é necessário estar conectado como um usuário que tenha privilégios para criar usuários. Para obter mais informações sobre como criar usuários no Microsoft Active Directory, consulte Gerenciar usuários e grupos em AWS Managed Microsoft AD no AWS Directory ServiceGuia de administração

Etapa 5: Ativar o tráfego entre VPCs entre o diretório e a instância de banco de dados

Se você planeja localizar o diretório e a instância de banco de dados na mesma VPC, ignore esta etapa e prossiga para Etapa 6: Criar ou modificar uma instância de banco de dados Oracle.

Se você planeja localizar o diretório e a instância de banco de dados em VPCs ou contas da AWS diferentes, configure o tráfego entre VPCs usando o emparelhamento de VPCs ou o AWS Transit Gateway. O procedimento a seguir habilita o tráfego entre VPCs usando o emparelhamento de VPCs. Siga as instruções em O que é o emparelhamento de VPCs? no Guia de emparelhamento do Amazon Virtual Private Cloud.

Como habilitar o tráfego entre VPCs usando o emparelhamento de VPCs
  1. Configure regras apropriadas de roteamento de VPC para garantir que o tráfego de rede possa fluir em ambos os sentidos.

  2. Certifique-se de que o grupo de segurança da instância de banco de dados possa receber o tráfego de entrada do grupo de segurança do diretório. Para obter mais informações, consulte Práticas recomendadas para AWS Managed Microsoft AD no Guia deAWS Directory Service Administração.

  3. Garanta que não há nenhuma regra na lista de controle de acesso (ACL) de rede para bloquear o tráfego.

Se uma conta diferente da AWS for proprietária do diretório, é necessário compartilhá-lo.

Como compartilhar o diretório entre contas da AWS.
  1. Inicie o compartilhamento do diretório com a conta da AWS na qual a instância de banco de dados será criada seguindo as instruções em Tutorial: Compartilhar o diretório AWS Managed Microsoft AD para ingresso perfeito no domínio do EC2 no AWS Directory ServiceGuia de administração.

  2. Faça login no console do AWS Directory Service usando a conta para a instância de banco de dados e garanta que o domínio tenha o status SHARED antes de prosseguir.

  3. Enquanto estiver conectado ao console do AWS Directory Service usando a conta da instância de banco de dados, observe o valor do Directory ID (ID do diretório). Use esse ID do diretório para associar a instância de banco de dados ao domínio.

Etapa 6: Criar ou modificar uma instância de banco de dados Oracle

Crie ou modifique uma instância de banco de dados do Oracle para ser usada com o diretório. É possível usar o console, a CLI ou a API do RDS para associar uma instância de banco de dados a um diretório. Você pode fazer isso por meio de uma das seguintes maneiras:

A autenticação Kerberos só é compatível com instâncias de banco de dados do Oracle em uma VPC. A instância de banco de dados pode estar na mesma VPC do diretório ou em uma VPC diferente. Ao criar ou modificar a instância de banco de dados, faça o seguinte:

  • Forneça o identificador de domínio (identificador d-*) que foi gerado quando você criou seu diretório.

  • Forneça o nome da função do IAM criada.

  • Certifique-se de que o security group da instância de banco de dados possa receber tráfego de entrada do security group de diretórios e enviar tráfego de saída para o diretório.

Ao usar o console para criar uma instância de banco de dados, selecione Password and Kerberos authentication (Senha e autenticação Kerberos) na seção Database authentication (Autenticação de banco de dados). Escolha Browse Directory (Procurar diretório) e selecione o diretório ou escolha Create a new directory (Criar um diretório).

Configuração de autenticação Kerberos ao criar uma instância de banco de dados

Ao usar o console para modificar ou restaurar uma instância de banco de dados, escolha o diretório na seção Kerberos authentication (Autenticação Kerberos) ou escolha Create a new directory (Criar um diretório).

Configuração da autenticação Kerberos ao modificar ou restaurar uma instância de banco de dados

Quando você usa a AWS CLI, são necessários os seguintes parâmetros para que a instância de banco de dados possa usar o diretório criado:

  • Para o parâmetro --domain, use o identificador de domínio (identificador "d-*") gerado quando o diretório foi criado.

  • Para o parâmetro --domain-iam-role-name, use a função criada que usa a política gerenciada AmazonRDSDirectoryServiceAccess do IAM.

Por exemplo, o comando da CLI a seguir modifica uma instância de banco de dados para usar um diretório.

Para Linux, macOS ou Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --domain d-ID \ --domain-iam-role-name role-name

Para Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-name
Importante

Se você modificar uma instância de banco de dados para permitir a autenticação Kerberos, reinicialize a instância de banco de dados após fazer a alteração.

nota

MANAGED_SERVICE_USER é uma conta de serviço cujo nome é gerado aleatoriamente pelo Directory Service para RDS. Durante a configuração de autenticação Kerberos, o RDS for Oracle cria um usuário com o mesmo nome e atribui a ele o privilégio CREATE SESSION. O usuário do Oracle DB é identificado externamente como MANAGED_SERVICE_USER@EXAMPLE.COM, em que EXAMPLE.COM é o nome de seu domínio. Periodicamente, o RDS usa as credenciais fornecidas pelo Serviço de Diretório para efetuar logon no banco de dados Oracle. Depois, o RDS destrói imediatamente o cache do tíquete.

Etapa 7: Criar logins do Oracle da autenticação Kerberos

Use as credenciais de usuário mestre do Amazon RDS para se conectar à instância de banco de dados do Oracle como você faz com qualquer outra instância de banco de dados. A instância de banco de dados é ingressada no domínio AWS Managed Microsoft AD. Assim, é possível provisionar logins e usuário do Oracle de usuários e grupos do Microsoft Active Directory no domínio. Para gerenciar permissões de banco de dados, conceda e revogue permissões padrão do Oracle para esses logins.

Para permitir que um usuário do Microsoft Active Directory se autentique com o Oracle
  1. Conecte-se à instância de banco de dados Oracle usando suas credenciais de usuário Amazon RDS mestre.

  2. Crie um usuário autenticado externamente no banco de dados Oracle.

    No exemplo a seguir, substitua KRBUSER@CORP.EXAMPLE.COM pelo nome de usuário e pelo nome de domínio.

    CREATE USER "KRBUSER@CORP.EXAMPLE.COM" IDENTIFIED EXTERNALLY; GRANT CREATE SESSION TO "KRBUSER@CORP.EXAMPLE.COM";

    Os usuários (humanos e aplicações) de seu domínio agora podem se conectar à instância de banco de dados Oracle em uma máquina cliente conectada ao domínio usando a autenticação Kerberos.

Etapa 8: Configurar um cliente Oracle

Para configurar um cliente Oracle, atenda aos seguintes requisitos:

  • Crie um arquivo de configuração chamado krb5.conf (Linux) ou krb5.ini (Windows) para apontar para o domínio. Configure o cliente Oracle para usar este arquivo de configuração.

  • Verifique se o tráfego pode fluir entre o host do cliente e o AWS Directory Service pela porta DNS 53 por TCP/UDP, portas Kerberos (88 e 464 para AWS Directory Service gerenciado) por TCP e porta LDAP 389 por TCP.

  • Verifique se o tráfego pode fluir entre o host do cliente e a instância de banco de dados pela porta do banco de dados.

Este é o conteúdo de amostra para AWS Managed Microsoft AD.

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } [domain_realm] .example.com = CORP.EXAMPLE.COM example.com = CORP.EXAMPLE.COM

Veja a seguir um exemplo de conteúdo para o Microsoft AD on-premises: No arquivo krb5.conf ou krb5.ini, substitua on-prem-ad-server-name pelo nome do seu servidor AD local.

[libdefaults] default_realm = ONPREM.COM [realms] AWSAD.COM = { kdc = awsad.com admin_server = awsad.com } ONPREM.COM = { kdc = on-prem-ad-server-name admin_server = on-prem-ad-server-name } [domain_realm] .awsad.com = AWSAD.COM awsad.com= AWSAD.COM .onprem.com = ONPREM.COM onprem.com= ONPREM.COM
nota

Depois de configurar o arquivo krb5.ini ou krb5.conf, recomendamos que você reinicie o servidor.

Veja a seguir um exemplo de conteúdo sqlnet.ora para uma configuração do SQL*Plus:

SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5PRE,KERBEROS5) SQLNET.KERBEROS5_CONF=path_to_krb5.conf_file

Para obter um exemplo de uma configuração do SQL Developer, consulte o Documento 1609359.1 no suporte da Oracle.