Controlar acesso com grupos de segurança - Amazon Relational Database 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á.

Controlar acesso com grupos de segurança

Os grupos de segurança controlam o acesso que o tráfego tem dentro e fora de uma instância de banco de dados. Três tipos de grupos de segurança são usados com o Amazon RDS: grupos de segurança da VPC, grupos de segurança de banco de dados e grupos de segurança do EC2-Classic. Em termos simples, eles funcionam da seguinte forma:

  • Um grupo de segurança da VPC controla o acesso a instâncias de banco de dados e do EC2 em uma VPC.

  • Um grupo de segurança de banco de dados controla o acesso a instâncias de banco de dados EC2-Classic que não estejam em uma VPC.

  • Um grupo de segurança do EC2-Classic controla o acesso a uma instância do EC2. Para obter mais informações sobre grupos de segurança do EC2-Classic, consulte EC2-Classic na documentação do Amazon EC2.

Por padrão, o acesso à rede é desabilitado para uma instância de banco de dados. É possível especificar regras em um grupo de segurança que permitem o acesso de um intervalo de endereço IP, de uma porta ou de grupo de segurança. Uma vez que as regras de entrada são configuradas, as mesmas regras se aplicam a todos os DB instances associados a esse grupo de segurança. Você pode especificar até 20 regras no grupo de segurança.

Grupos de segurança da VPC

Cada regra de grupo de segurança de VPC permite que uma origem específica acesse uma instância de banco de dados em uma VPC que esteja associada a esse grupo de segurança de VPC. A origem pode ser uma gama de endereços (por exemplo, 203.0.113.0/24) ou outro grupo de segurança da VPC. Ao especificar um grupo de segurança de VPC como origem, você permite o tráfego recebido de todas as instâncias (geralmente servidores de aplicativos) que usam o grupo de segurança de VPC de origem. Os grupos de segurança de VPC podem ter regras que regem o tráfego de entrada e de saída, embora as regras de trânsito de saída geralmente não se apliquem a instâncias de banco de dados. As regras de tráfego de saída se aplicam apenas quando a instância de banco de dados age como um cliente. Por exemplo, as regras de tráfego de saída se aplicam a uma instância de banco de dados do Oracle com links de banco de dados de saída. É necessário usar a API do Amazon EC2 ou a opção Security Group (Grupo de segurança) no console da VPC para criar grupos de segurança da VPC.

Quando você cria regras para o seu grupo de segurança de VPC que permitem acessar as instâncias na sua VPC, você deve especificar uma porta para cada intervalo de endereços para o qual a regra permite o acesso. Por exemplo, se quiser habilitar o acesso SSH a instâncias na VPC, crie uma regra que permitirá o acesso à porta TCP 22 para o intervalo de endereços especificado.

É possível configurar vários grupos de segurança de VPC que permitem o acesso a diferentes portas para diferentes instâncias na sua VPC. Por exemplo, você pode criar um grupo de segurança da VPC que permite acessar a porta TCP 80 para servidores web na VPC. Você pode criar outro grupo de segurança da VPC que permite acessar a porta TCP 3306 para instâncias de banco de dados MySQL do RDS na VPC.

Para obter mais informações sobre grupos de segurança da VPC, consulte Grupos de segurança no Guia do usuário da Amazon Virtual Private Cloud.

nota

Se a instância de banco de dados estiver em uma VPC, mas não acessível publicamente, também será possível usar a conexão VPN site a site da AWS e uma conexão do AWS Direct Connect para acessá-la de uma rede privada. Para obter mais informações, consulte Privacidade do tráfego entre redes.

Grupos de segurança de banco de dados

Os grupos de segurança de banco de dados são usados com instâncias de bancos de dados que não estão em uma VPC e na plataforma EC2-Classic. Cada regra de grupo de segurança de banco de dados permite que uma origem específica acesse uma instância de banco de dados que esteja associada a esse grupo de segurança de banco de dados. A origem pode ser um intervalo de endereços (por exemplo, 203.0.113.0/24) ou um grupo de segurança do EC2-Classic. Ao especificar um grupo de segurança do EC2-Classic como origem, você permite o tráfego recebido de todas as instâncias do EC2 que usam esse grupo de segurança do EC2-Classic. As regras do grupo de segurança de banco de dados se aplicam apenas ao tráfego de entrada; o tráfego de saída não é permitido atualmente para instâncias de banco de dados.

Você não precisa especificar um número de porta de destino ao criar regras do grupo de segurança de banco de dados. O número de porta definido para a instância de banco de dados é usado como o número de porta de destino para todas as regras definidas para o grupo de segurança de banco de dados. Grupos de segurança de banco de dados podem ser criados usando as operações da API do Amazon RDS ou a página do Amazon RDS do Console de gerenciamento da AWS.

Para obter mais informações sobre como trabalhar com grupos de segurança de banco de dados, consulte Trabalhar com grupos de segurança de banco de dados (plataforma EC2-Classic).

Grupos de segurança de banco de dados vs. Grupos de segurança da VPC

A tabela a seguir mostra as principais diferenças entre os grupos de segurança de banco de dados e os grupos de segurança de VPC.

security group de banco de dados VPC security group (Grupo de segurança da VPC)
Controla o acesso a instâncias de banco de dados fora de uma VPC. Controla o acesso a instâncias de banco de dados na VPC.
Usa operações da API do Amazon RDS ou a página do Amazon RDS do Console de gerenciamento da AWS para criar e gerenciar grupos e regras. Usa operações da API do Amazon EC2 ou a página da Amazon VPC do Console de gerenciamento da AWS para criar e gerenciar grupos e regras.
Ao adicionar uma regra a um grupo, você não precisa especificar o número da porta ou o protocolo. Ao adicionar uma regra a um grupo, especifique o protocolo como TCP. Além disso, especifique o mesmo número de porta usado para criar instâncias de banco de dados (ou opções) que você pretende adicionar como membros ao grupo.
Os grupos permitem o acesso de grupos de segurança do EC2-Classic na sua conta da AWS ou em outras contas. Grupos permitem o acesso de outros grupos de segurança de VPC somente na sua VPC.

Cenário de grupos de segurança

Um uso comum de uma instância de banco de dados em uma VPC é compartilhar dados com um servidor de aplicativos executado em uma instância do Amazon EC2 na mesma VPC, acessado por um aplicativo cliente fora da VPC. Para este cenário, use as páginas do RDS e da VPC no Console de gerenciamento da AWS ou nas operações de API do RDS e do EC2 para criar as instâncias e os grupos de segurança necessários:

  1. Crie um grupo de segurança de VPC (por exemplo, sg-appsrv1) e defina as regras de entrada que utilizam os endereços IP do aplicativo cliente como a origem. Esse grupo de segurança permite que o seu aplicativo cliente se conecte a instâncias do EC2 em uma VPC que usa esse grupo de segurança.

  2. Crie uma instância do EC2 para o aplicativo e adicione a instância do EC2 ao grupo de segurança de VPC (sg-appsrv1) que você criou na etapa anterior. A instância do EC2 na VPC compartilha o grupo de segurança de VPC com a instância de banco de dados.

  3. Crie um segundo grupo de segurança de VPC (por exemplo, sg-dbsrv1) e crie uma nova regra especificando o grupo de segurança de VPC que você criou na etapa 1 (sg-appsrv1) como origem.

  4. Crie uma nova instância de banco de dados e adicione a instância de banco de dados ao grupo de segurança de VPC (sg-dbsrv1) que você criou na etapa anterior. Quando você criar a instância de banco de dados, use o mesmo número de porta que o especificado para a regra do grupo de segurança de VPC (sg-dbsrv1) que você criou na etapa 3.

O diagrama a seguir mostra esse cenário.


                    Instância de banco de dados e instância do EC2 em uma VPC

Para obter mais informações sobre como usar uma VPC, consulte VPCs da Amazon Virtual Private Cloud e do Amazon RDS.

Criar um grupo de segurança de VPC

Você pode criar um grupo de segurança de VPC para uma instância de banco de dados usando o console da VPC. Para obter informações sobre como criar um grupo de segurança, consulte Fornecer acesso à instância de banco de dados na VPC criando um grupo de segurança e Grupos de segurança no Guia do usuário da Amazon Virtual Private Cloud.

Associar um grupo de segurança a uma instância de banco de dados

Você pode associar um grupo de segurança a uma instância de banco de dados usando Modify (Modificar) no console do RDS, a API ModifyDBInstance do Amazon RDS ou o comando modify-db-instance da AWS CLI.

Para mais informações sobre a modificação de uma instância de banco de dados , consulte Modificar uma instância de banco de dados do Amazon RDS. Para considerações de grupo de segurança quando você restaura uma instância de banco de dados de um snapshot de banco de dados, consulte Considerações sobre os grupos de segurança.

Excluir grupos de segurança de VPC do banco de dados

Os grupos de segurança de VPC do banco de dados são um mecanismo do RDS para sincronizar informações de segurança com um grupo de segurança de VPC. No entanto, essa sincronização não é mais necessária, porque o RDS foi atualizado para usar as informações do grupo de segurança de VPC diretamente.

nota

Os grupos de segurança de banco de dados da VPC estão defasados e são diferentes dos grupos de segurança de banco de dados, grupos de segurança da VPC e grupos de segurança do EC2-Classic.

Recomendamos que você exclua todos os grupos de segurança de VPC de banco de dados que está usando no momento. Se você não excluir seus grupos de segurança de VPC de banco de dados, poderá encontrar comportamentos não intencionais com suas instâncias de banco de dados, o que pode ser tão grave quanto perder o acesso a uma instância de banco de dados. Os comportamentos não desejados podem resultar de uma ação, como a atualização para uma instância de banco de dados, um grupo de parâmetros, ou algo semelhante. Essas atualizações fazem o RDS ressincronizar o grupo de segurança de VPC de banco de dados com o grupo de segurança de VPC. Essa ressincronização pode resultar na substituição das informações de segurança por informações de segurança incorretas e desatualizadas. Isso, por sua vez, pode ter um impacto severo sobre a sua capacidade de acesso às instâncias de banco de dados.

Como determinar se eu tenho um grupo de segurança de VPC de banco de dados?

Como grupos de segurança de VPC de banco de dados se tornaram obsoletos, eles não serão exibidos no console do RDS. No entanto, é possível chamar o comando describe-db-security-groups da AWS CLI ou a operação da API DescribeDBSecurityGroups para determinar se você possui algum grupo de segurança da VPC de banco de dados.

Nesse caso, você pode chamar o comando describe-db-security-groups da AWS CLI com JSON especificado como o formato de saída. Se fizer isso, você poderá identificar grupos de segurança de VPC pelo identificador da VPC na segunda linha da saída do grupo de segurança conforme mostrado no exemplo a seguir.

{ "DBSecurityGroups": [ { "VpcId": "vpc-abcd1234", "DBSecurityGroupDescription": "default:vpc-abcd1234", "IPRanges": [ { "Status": "authorized", "CIDRIP": "xxx.xxx.xxx.xxx/n" }, { "Status": "authorized", "CIDRIP": "xxx.xxx.xxx.xxx/n " } ], "OwnerId": "123456789012", "EC2SecurityGroups": [], "DBSecurityGroupName": "default:vpc-abcd1234" } ] }

Se você executar a operação DescribeDBSecurityGroups da API, será possível identificar grupos de segurança da VPC de banco de dados usando o elemento de resposta <VpcId>, conforme mostrado no exemplo a seguir.

<DBSecurityGroup> <EC2SecurityGroups/> <DBSecurityGroupDescription>default:vpc-abcd1234</DBSecurityGroupDescription> <IPRanges> <IPRange> <CIDRIP>xxx.xxx.xxx.xxx/n</CIDRIP> <Status>authorized</Status> </IPRange> <IPRange> <CIDRIP>xxx.xxx.xxx.xxx/n</CIDRIP> <Status>authorized</Status> </IPRange> </IPRanges> <VpcId>vpc-abcd1234</VpcId> <OwnerId>123456789012</OwnerId> <DBSecurityGroupName>default:vpc-abcd1234</DBSecurityGroupName> </DBSecurityGroup>

Como faço para excluir um security group de VPC de banco de dados?

Como os grupos de segurança da VPC de banco de dados não são exibidos no console do RDS, é necessário chamar o comando delete-db-security-group da AWS CLI ou a operação da API DeleteDBSecurityGroup para excluir um grupo de segurança da VPC de banco de dados.

Depois de excluir um grupo de segurança de VPC de banco de dados, suas instâncias de banco de dados na VPC continuarão a ser protegidas pelo grupo de segurança de VPC dessa VPC. O grupo de segurança de VPC do banco de dados que foi excluído era apenas uma cópia das informações do grupo de segurança de VPC.

Revisar os modelos do AWS CloudFormation

Versões mais antigas do template do AWS CloudFormation podem conter instruções para criar um grupo de segurança de VPC de banco de dados. Como os grupos de segurança de VPC de banco de dados ainda não estão completamente obsoletos, eles ainda podem ser criados. Certifique-se de que qualquer modelo do AWS CloudFormation usado para provisionar uma instância de banco de dados com configurações de segurança também não crie um grupo de segurança de VPC de banco de dados. Não use modelos do AWS CloudFormation que criam um DBSecurityGroup do RDS com um EC2VpcId, conforme mostrado no exemplo a seguir.

{ "DbSecurityByEC2SecurityGroup" : { "Type" : "AWS::RDS::DBSecurityGroup", "Properties" : { "GroupDescription" : "Ingress for security group", "EC2VpcId" : "MyVPC", "DBSecurityGroupIngress" : [ { "EC2SecurityGroupId" : "sg-b0ff1111", "EC2SecurityGroupOwnerId" : "111122223333" }, { "EC2SecurityGroupId" : "sg-ffd722222", "EC2SecurityGroupOwnerId" : "111122223333" } ] } } }

Em vez disso, adicione informações de segurança para suas instâncias de bancos de dados em uma VPC usando grupos de segurança de VPC, conforme mostrado no exemplo a seguir.

{ "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName" : { "Ref" : "DBName" }, "Engine" : "MySQL", "MultiAZ" : { "Ref": "MultiAZDatabase" }, "MasterUsername" : { "Ref" : "<master_username>" }, "DBInstanceClass" : { "Ref" : "DBClass" }, "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" }, "MasterUserPassword": { "Ref" : "<master_password>" }, "VPCSecurityGroups" : [ { "Fn::GetAtt": [ "VPCSecurityGroup", "GroupId" ] } ] } } }