Utilizar segredos para acessar endpoints do AWS Database Migration Service - AWS Database Migration Service

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á.

Utilizar segredos para acessar endpoints do AWS Database Migration Service

Pois AWS DMS, um segredo é uma chave criptografada que você pode usar para representar um conjunto de credenciais de usuário para autenticar, por meio de autenticação secreta, a conexão de banco de dados para uma AWS DMS fonte compatível ou um endpoint de destino. Para um endpoint Oracle que também usa o Oracle Automatic Storage Management (ASM), é AWS DMS necessário um segredo adicional que represente as credenciais do usuário para acessar o Oracle ASM.

Você pode criar o segredo ou segredos AWS DMS necessários para a autenticação secreta usando AWS Secrets Manager um serviço para criar, armazenar e recuperar credenciais com segurança para acessar aplicativos, serviços e recursos de TI na nuvem e no local. Isso inclui compatibilidade com a alternância periódica automática do valor do segredo criptografado sem sua intervenção, fornecendo um nível adicional de segurança às credenciais. Ativar a rotação de valores secretos AWS Secrets Manager também garante que essa rotação de valores secretos ocorra sem qualquer efeito em qualquer migração de banco de dados que dependa do segredo. Para autenticar uma conexão de banco de dados do endpoint secretamente, crie um segredo cuja identidade ou ARN você atribui ao SecretsManagerSecretId e inclui nas configurações do endpoint. Para autenticar um Oracle ASM como parte de um endpoint do Oracle secretamente, crie um segredo cuja identidade ou ARN você atribui ao SecretsManagerOracleAsmSecretId e inclui nas configurações do endpoint.

nota

Não é possível utilizar credenciais mestras gerenciadas pelo Amazon RDS Aurora. Essas credenciais não incluem informações de host ou porta, que AWS DMS precisam estabelecer conexões. Em vez disso, crie um novo usuário e segredo. Para obter informações sobre como criar um usuário e um segredo, consulte Usando o AWS Management Console para criar uma função de acesso secreta e secreta a seguir.

Para obter mais informações sobre AWS Secrets Manager, consulte O que é o AWS Secrets Manager? no Guia do AWS Secrets Manager usuário.

AWS DMS oferece suporte à autenticação secreta para os seguintes bancos de dados locais ou AWS gerenciados em endpoints de origem e destino compatíveis:

  • Amazon DocumentDB

  • IBM Db2 LUW

  • Microsoft SQL Server

  • MongoDB

  • MySQL

  • Oracle

  • PostgreSQL

  • Amazon Redshift

  • SAP ASE

Para se conectar a qualquer um desses bancos de dados, você tem a opção de inserir um dos seguintes conjuntos de valores, mas não ambos, como parte das configurações do endpoint:

  • Valores de texto não criptografado para autenticar a conexão do banco de dados utilizando as configurações UserName, Password, ServerName e Port. Para um endpoint do Oracle que também utiliza o Oracle ASM, inclua valores adicionais de texto não criptografado para autenticar o ASM utilizando as configurações AsmUserName, AsmPassword e AsmServerName.

  • Autenticação de segredo utilizando valores para as configurações SecretsManagerSecretId e SecretsManagerAccessRoleArn. Para um endpoint do Oracle que utiliza o Oracle ASM, inclua valores adicionais nas configurações SecretsManagerOracleAsmSecretId e SecretsManagerOracleAsmAccessRoleArn. Os valores de segredos dessas configurações podem incluir o seguinte para:

    • SecretsManagerSecretId: o nome do recurso da Amazon (ARN) completo, o ARN parcial ou o nome amigável de um segredo que você criou para acesso ao banco de dados do endpoint no AWS Secrets Manager.

    • SecretsManagerAccessRoleArn— O ARN de uma função de acesso secreto que você criou no IAM para fornecer AWS DMS acesso a esse SecretsManagerSecretId segredo em seu nome.

    • SecretsManagerOracleAsmSecretId: o nome do recurso da Amazon (ARN) completo, o ARN parcial ou o nome amigável de um segredo que você criou para acesso ao Oracle ASM no AWS Secrets Manager.

    • SecretsManagerOracleAsmAccessRoleArn: o ARN de um perfil de acesso secreto que você criou no IAM para fornecer ao AWS DMS acesso a esse segredo do SecretsManagerOracleAsmSecretId em seu nome.

    nota

    Você também pode usar uma única função de acesso secreto para fornecer AWS DMS acesso tanto ao SecretsManagerSecretId segredo quanto ao SecretsManagerOracleAsmSecretId segredo. Se você criar essa único acesso secreto para ambos os segredos, atribua o mesmo ARN para esse perfil de acesso a SecretsManagerAccessRoleArn e a SecretsManagerOracleAsmAccessRoleArn. Por exemplo, se o perfil de acesso secreto para ambos os segredos tiver seu ARN atribuído à variável ARN2xsecrets, você poderá definir essas configurações de ARN da seguinte forma:

    SecretsManagerAccessRoleArn = ARN2xsecrets; SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;

    Para obter mais informações sobre como criar esses valores, consulte Usando o AWS Management Console para criar uma função de acesso secreta e secreta.

Depois de criar e especificar as configurações do segredo necessário e do endpoint do perfil de acesso secreto para seus endpoints, atualize as permissões nas contas de usuário que executarão a solicitação de API CreateEndpoint ou ModifyEndpoint com esses detalhes do segredo. Certifique-se de que essas permissões de conta incluam a IAM:GetRole permissão na função de acesso secreto e a SecretsManager:DescribeSecret permissão na chave secreta. AWS DMS requer essas permissões para validar a função de acesso e seu segredo.

Como fornecer e verificar as permissões de usuário necessárias
  1. Faça login no AWS Management Console e abra o AWS Identity and Access Management console emhttps://console.aws.amazon.com/iam/.

  2. Escolha Usuários e escolha o ID de usuário utilizado para fazer chamadas de API CreateEndpoint e ModifyEndpoint.

  3. Na guia Permissões, escolha {} JSON.

  4. Verifique se o usuário tem as permissões a seguir:

    { "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "SECRET_ACCESS_ROLE_ARN" }, { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "SECRET_ARN" } ] }
  5. Se o usuário não tiver essas permissões, adicione-as.

  6. Se estiver utilizando um perfil do IAM para fazer chamadas de API do DMS, repita as etapas acima para o respectivo perfil.

  7. Abra um terminal e use o AWS CLI para validar se as permissões foram dadas corretamente assumindo a função ou o usuário usado acima.

    1. Valide a permissão do usuário ao SecretAccessRole usar o get-role comando IAM.

      aws iam get-role --role-name ROLE_NAME

      Substitua ROLE_NAME pelo nome de SecretsManagerAccessRole.

      Se o comando retornar uma mensagem de erro, verifique se as permissões foram concedidas corretamente.

    2. Valide a permissão do usuário no segredo utilizando o comando describe-secret do Secrets Manager.

      aws secretsmanager describe-secret --secret-id SECRET_NAME OR SECRET_ARN --region=REGION_NAME

      O usuário pode ser o nome amigável, o ARN parcial ou o ARN completo. Para obter mais informações, consulte describe-secret.

      Se o comando retornar uma mensagem de erro, verifique se as permissões foram concedidas corretamente.

Usando o AWS Management Console para criar uma função de acesso secreta e secreta

Você pode usar o AWS Management Console para criar um segredo para autenticação de endpoint e criar a política e a função para permitir o acesso AWS DMS ao segredo em seu nome.

Para criar um segredo usando o AWS Management Console que AWS DMS pode ser usado para autenticar um banco de dados para conexões de endpoint de origem e destino
  1. Faça login no AWS Management Console e abra o AWS Secrets Manager console emhttps://console.aws.amazon.com/secretsmanager/.

  2. Selecione Armazenar um novo segredo.

  3. Em Selecionar tipo de segredo na página Armazenar um novo segredo, escolha Outro tipo de segredo e escolha Texto sem formatação.

    nota

    Esse é o único local em que você precisa inserir credenciais de texto não criptografado para conectar-se ao banco de dados do endpoint daqui em diante.

  4. No campo Texto sem formatação:

    • Para um segredo cuja identidade você atribui a SecretsManagerSecretId, insira a seguinte estrutura JSON.

      { "username": db_username, "password": db_user_password, "port": db_port_number, "host": db_server_name }
      nota

      Essa é a lista mínima de membros JSON necessária para autenticar o banco de dados do endpoint. É possível adicionar qualquer configuração adicional de endpoint JSON como membros JSON, tudo em letras minúsculas que desejar. No entanto, o AWS DMS ignora quaisquer membros JSON adicionais para autenticação de endpoint.

      Aqui, o db_username é o nome do usuário que está acessando o banco de dados, db_user_password é a senha do usuário do banco de dados, db_port_number é o número da porta para acessar o banco de dados e db_server_name é o nome do servidor de banco de dados (endereço) na web, como no exemplo a seguir.

      { "username": "admin", "password": "some_password", "port": "8190", "host": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com" }
    • Para um segredo cuja identidade você atribui a SecretsManagerOracleAsmSecretId, insira a seguinte estrutura JSON.

      { "asm_user": asm_username, "asm_password": asm_user_password, "asm_server": asm_server_name }
      nota

      Essa é a lista mínima de membros JSON necessária para autenticar o Oracle ASM para um endpoint do Oracle. Também é a lista completa que pode ser especificada com base nas configurações de endpoint do Oracle ASM disponíveis.

      Aqui, asm_username é o nome do usuário que está acessando o Oracle ASM, asm_user_password é a senha do usuário do Oracle ASM e asm_server_name é o nome do servidor do Oracle ASM (endereço) na web, incluindo a porta, como no exemplo a seguir.

      { "asm_user": "oracle_asm_user", "asm_password": "oracle_asm_password", "asm_server": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com:8190/+ASM" }
  5. Selecione uma chave AWS KMS de criptografia para criptografar o segredo. Você pode aceitar a chave de criptografia padrão criada para seu serviço AWS Secrets Manager ou selecionar uma AWS KMS chave criada por você.

  6. Especifique um nome para referenciar esse segredo e uma descrição opcional. Esse é o nome amigável utilizado como o valor de SecretsManagerSecretId ou SecretsManagerOracleAsmSecretId.

  7. Se você quiser ativar a rotação automática no segredo, precisará selecionar ou criar uma AWS Lambda função com permissão para alternar as credenciais do segredo conforme descrito. No entanto, antes de definir a alternância automática para utilizar o função do Lambda, verifique as configurações do perfil adicionam os quatro caracteres a seguir ao valor da variável de ambiente EXCLUDE_CHARACTERS.

    ;.:+{}

    AWS DMS não permite esses caracteres em senhas usadas para credenciais de endpoint. Configurar o função do Lambda para excluí-los impede que o AWS Secrets Manager gere esses caracteres como parte de seus valores de senha alternados. Depois de definir a rotação automática para usar sua função Lambda, gira AWS Secrets Manager imediatamente o segredo para validar sua configuração secreta.

    nota

    Dependendo da configuração do mecanismo de banco de dados, o banco de dados talvez não busque as credenciais alternadas. Nesse caso, é necessário reiniciar a tarefa manualmente para atualizar as credenciais.

  8. Revise e guarde seu segredo em AWS Secrets Manager. Em seguida, você pode pesquisar cada segredo pelo nome amigável e recuperar o ARN secreto como o valor SecretsManagerOracleAsmSecretId ou conforme apropriado SecretsManagerSecretId para autenticar o acesso à sua conexão de banco de dados de endpoint e ao Oracle ASM (se usado). AWS Secrets Manager

Para criar a política de acesso secreto e a função para definir seu SecretsManagerAccessRoleArn ouSecretsManagerOracleAsmAccessRoleArn, AWS DMS o que AWS Secrets Manager permite acessar seu segredo apropriado
  1. Faça login AWS Management Console e abra o console AWS Identity and Access Management (IAM) em https://console.aws.amazon.com/iam/.

  2. Escolha Políticas e Criar política.

  3. Escolha JSON e insira a política a seguir para ativar o acesso e a descriptografia do segredo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": secret_arn, }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": kms_key_arn, } ] }

    Aqui, secret_arn é o ARN do segredo, que é possível obter de SecretsManagerSecretId ou de SecretsManagerOracleAsmSecretId conforme apropriado, e kms_key_arn é o ARN da chave do AWS KMS que você está utilizando para criptografar o segredo, como no exemplo a seguir.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:us-east-2:123456789012:secret:MySQLTestSecret-qeHamH" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/761138dc-0542-4e58-947f-4a3a8458d0fd" } ] }
    nota

    Se você usar a chave de criptografia padrão criada por AWS Secrets Manager, não precisará especificar as AWS KMS permissões parakms_key_arn.

    Se quiser que a política forneça acesso aos dois segredos, basta especificar um objeto de recurso JSON adicional para o outro secret_arn.

    Se o segredo estiver em uma conta diferente, o perfil SecretsManagerAccessRoleArn precisará de uma política adicional para verificar o segredo entre contas. Para esses casos de uso, adicione a ação secretsmanager:DescribeSecret à política. Para obter mais detalhes sobre como configurar um segredo entre contas, consulte Permissões para AWS segredos do Secrets Manager para usuários em uma conta diferente.

  4. Revise e crie a política com um nome amigável e uma descrição opcional.

  5. Escolha Funções e Criar função.

  6. Escolha Serviço da AWS como o tipo de entidade confiável.

  7. Escolha DMS na lista de serviços como o serviço confiável e escolha Próximo: Permissões.

  8. Pesquise e anexe a política que criada na etapa 4 e continue para adicionar quaisquer tags e revisar o perfil. Nesse ponto, edite as relações de confiança da função para usar seu diretor de serviço AWS DMS regional como entidade confiável. Essa entidade principal tem o seguinte formato.

    dms.region-name.amazonaws.com

    Aqui, region-name é nome da sua região, como us-east-1. Assim, segue um diretor de serviço AWS DMS regional para essa região.

    dms.us-east-1.amazonaws.com
  9. Depois de editar a entidade confiável do perfil, crie o perfil com um nome amigável e uma descrição opcional. Agora é possível pesquisar o novo perfil pelo nome amigável no IAM e recuperar o ARN do perfil como o valor SecretsManagerAccessRoleArn ou SecretsManagerOracleAsmAccessRoleArn para autenticar sua conexão com o banco de dados do endpoint.

Como utilizar o gerenciador de segredos com uma instância de replicação em uma sub-rede privada
  1. Crie um endpoint da VPC do gerenciador secreto e anote o DNS do endpoint. Para obter mais informações sobre como criar um endpoint da VPC do gerenciador de segredos, consulte Conectar-se ao Secrets Manager por meio de um endpoint da VPC no Guia do usuário do AWS Secrets Manager.

  2. Anexe o grupo de segurança da instância de replicação ao endpoint da VPC do gerenciador de segredos.

  3. Para as regras de saída do grupo de segurança da instância de replicação, permita todo o tráfego para o destino 0.0.0.0/0.

  4. Defina o atributo de conexão adicional secretsManagerEndpointOverride=secretsManager endpoint DNS do endpoint para fornecer o DNS do endpoint da VPC ao gerenciador de segredo, conforme mostrado no exemplo a seguir.

    secretsManagerEndpointOverride=vpce-1234a5678b9012c-12345678.secretsmanager.eu-west-1.vpce.amazonaws.com