Amazon RDS - Controle de acesso ao banco de dados
Para acessar a instância do banco de dados Amazon RDS, o usuário precisa de permissões específicas. Isso é configurado usando AWS IAM (gerenciamento de identidade e acesso). Neste tutorial veremos como esta configuração é feita.
A configuração envolve duas partes.
Authentication
Controle de acesso
Envolve a criação de nome de usuário, senha e geração de chaves de acesso para o usuário. Com a ajuda da chave de acesso, é possível fazer acesso programático ao serviço AWS RDS. As ferramentas SDK e CLI usam as chaves de acesso para fazer login criptograficamente com a solicitação.
Também podemos usar uma função IAM para autenticar um usuário. Mas a função não é atribuída a nenhum usuário específico; em vez disso, qualquer usuário pode assumir a função temporariamente e concluir a tarefa necessária. Depois que a tarefa termina, a função pode ser revogada e o usuário perde a capacidade de autenticação.
Depois que um usuário é autenticado, uma política anexada a esse usuário determina o tipo de tarefas que o usuário pode realizar. Abaixo está um exemplo de política que permite a criação de uma instância RDS DB, em uma instância t2.micro para o DB Engine MySQL.
{
"Version": "2018-09-11",
"Statement": [
{
"Sid": "AllowCreateDBInstanceOnly",
"Effect": "Allow",
"Action": [
"rds:CreateDBInstance"
],
"Resource": [
"arn:aws:rds:*:123456789012:db:test*",
"arn:aws:rds:*:123456789012:og:default*",
"arn:aws:rds:*:123456789012:pg:default*",
"arn:aws:rds:*:123456789012:subgrp:default"
],
"Condition": {
"StringEquals": {
"rds:DatabaseEngine": "mysql",
"rds:DatabaseClass": "db.t2.micro"
}
}
}
]
}
Ação em qualquer recurso RDS
No exemplo a seguir, vemos uma política que permite qualquer ação de descrição em qualquer recurso RDS. O símbolo * é usado para representar qualquer recurso.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowRDSDescribe",
"Effect":"Allow",
"Action":"rds:Describe*",
"Resource":"*"
}
]
}
Não permitir a exclusão de uma instância de banco de dados
A política a seguir não permite que um usuário exclua uma instância de banco de dados específica.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"DenyDelete1",
"Effect":"Deny",
"Action":"rds:DeleteDBInstance",
"Resource":"arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
}
]
}