Políticas de permissão para criar, modificar e excluir recursos no Amazon RDS
As seções a seguir apresentam exemplos de políticas de permissão que concedem e restringem o acesso aos recursos:
Permitir que um usuário crie instâncias de Bancos de Dados em uma conta da AWS
Veja a seguir um exemplo de política que permite à conta com o ID 123456789012
criar instâncias de banco de dados para a sua conta da AWS. A política exige que o nome da nova instância de banco de dados comece com test
. A nova instância de banco de dados também deve usar o mecanismo de banco de dados MySQL e a classe de instância de banco de dados db.t2.micro
. Além disso, a nova instância de banco de dados deve usar um grupo de opções e um grupo de parâmetros de banco de dados que começa com default
e deve usar o grupo de sub-redes default
.
{ "Version": "2012-10-17", "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 política inclui uma única instrução que especifica as seguintes permissões para o usuário do :
A política permite que a conta crie uma instância de banco de dados usando a operação de API CreateDBInstance (isso também se aplica ao comando create-db-instance da AWS CLI e ao AWS Management Console).
O elemento
Resource
especifica que o usuário pode realizar ações em ou com recursos. Você especifica recursos usando um nome de recurso da Amazon (ARN). O ARN inclui o nome do serviço ao qual o recurso pertence (rds
), a região da AWS (*
indica qualquer região neste exemplo), o número de conta da AWS (123456789012
é o número de conta neste exemplo) e o tipo de recurso. Para obter mais informações sobre como criar ARNs, consulte Nomes de recurso da Amazon (ARNs) no Amazon RDS.O elemento
Resource
neste exemplo especifica as restrições da política a seguir em recursos para o usuário:O identificador de instância de banco de dados para a nova instância de banco de dados deve começar com
test
(por exemplo,testCustomerData1
,test-region2-data
).O grupo de opções para a nova instância de banco de dados deve começar com
default
.O grupo de parâmetros de banco de dados para a nova instância de banco de dados deve começar com
default
.O grupo de sub-redes para a nova instância de banco de dados deve ser o grupo de sub-redes
default
.
O elemento
Condition
especifica que o mecanismo de banco de dados deve ser MySQL e a classe da instância de banco de dados deve serdb.t2.micro
. O elementoCondition
especifica as condições quando uma política deve entrar em vigor. Você pode adicionar permissões ou restrições usando o elementoCondition
. Para obter mais informações sobre como especificar condições, consulte Chaves de condição de políticas do Amazon RDS. Este exemplo especifica condiçõesrds:DatabaseEngine
erds:DatabaseClass
. Para obter informações sobre valores de condição válidos para ords:DatabaseEngine
, consulte a lista no parâmetroEngine
em CreateDBInstance. Para obter informações sobre os valores de condição válidos parards:DatabaseClass
, consulte Mecanismos de banco de dados compatíveis para classes de instância de banco de dados .
A política não especifica o elemento Principal
porque, em uma política baseada em identidade, não se especifica o principal que obtém as permissões. Quando você anexar uma política um usuário, o usuário será a entidade principal implícita. Quando você anexa uma política de permissão a um perfil do IAM, o principal identificado na política de confiança do perfil obtém as permissões.
Para obter uma lista de ações do Amazon RDS, consulte Ações definidas pelo Amazon RDS na Referência de autorização do serviço.
Permitir que um usuário execute qualquer ação de descrição em qualquer recurso do RDS
A seguinte política de permissões concede permissões a um usuário para executar todas as ações que começam com Describe
. Essas ações mostram informações sobre um recurso do RDS, como uma instância de banco de dados. O caractere curinga (*) no elemento Resource
indica que as ações são permitidas para todos os recursos do Amazon RDS que pertencem à conta.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRDSDescribe", "Effect": "Allow", "Action": "rds:Describe*", "Resource": "*" } ] }
Permitir que um usuário crie uma instância de banco de dados que usa o grupo de parâmetros de banco de dados e o grupo de sub-redes especificados.
A seguinte política de permissões concede permissões para permitir que um usuário crie apenas uma instância de banco de dados que deve usar o grupo de parâmetros de banco de dados mydbpg
e o grupo de sub-rede de banco de dados mydbsubnetgroup
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "rds:CreateDBInstance", "Resource": [ "arn:aws:rds:*:*:pg:mydbpg", "arn:aws:rds:*:*:subgrp:mydbsubnetgroup" ] } ] }
Conceder permissão para ações em um recurso com uma tag específica com dois valores diferentes
Você pode usar condições em sua política baseada em identidade para controlar o acesso aos recursos do Amazon RDS com base em tags. A política a seguir concede permissão para realizar a operação de API CreateDBSnapshot
em instâncias de banco de dados com a etiqueta stage
definida como development
ou test
.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAnySnapshotName", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:snapshot:*" }, { "Sid":"AllowDevTestToCreateSnapshot", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }
A política a seguir concede permissão para realizar a operação de API ModifyDBInstance
em instâncias de banco de dados com a etiqueta stage
definida como development
ou test
.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowChangingParameterOptionSecurityGroups", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:pg:*", "arn:aws:rds:*:123456789012:secgrp:*", "arn:aws:rds:*:123456789012:og:*" ] }, { "Sid":"AllowDevTestToModifyInstance", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }
Impedir que um usuário exclua uma instância de banco de dados
A seguinte política de permissões concede permissões para impedir que um usuário exclua uma instância de banco de dados específica. Por exemplo, você pode querer negar a capacidade de excluir suas instâncias de banco de dados de produção para qualquer usuário que não seja um administrador.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyDelete1", "Effect": "Deny", "Action": "rds:DeleteDBInstance", "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance" } ] }
Negar todo o acesso a um recurso
É possível negar acesso explicitamente a um recurso. As políticas de negação têm precedência sobre as políticas de permissão. A política a seguir nega explicitamente a um usuário a capacidade de gerenciar um recurso:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "rds:*", "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb" } ] }