Ir para o conteúdo

Quais são os privilégios mínimos necessários para que um usuário realize criações, exclusões, modificações, backup e recuperação em uma instância de banco de dados do Amazon RDS?

6 minuto de leitura
0

Quero conceder aos meus usuários do AWS Identity and Access Management (AWS IAM) as permissões mínimas necessárias para gerenciar instâncias de banco de dados do Amazon Relational Database Service (Amazon RDS).

Resolução

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para configurar o acesso do usuário do IAM à sua instância de banco de dados do RDS, conclua as seguintes etapas:

  1. Abra o console do IAM.

  2. No painel de navegação, escolha Usuários.

  3. Selecione Adicionar usuário e, em seguida, insira um Nome de usuário.

  4. Em Tipo de acesso, selecione acesso ao Console de Gerenciamento da AWS e, em seguida, crie uma senha para usar o console do Amazon RDS. Para fornecer acesso à AWS CLI, escolha Acesso programático.
    Importante: Em Acesso programático, escolha Download.csv para baixar o ID da chave de acesso e a chave de acesso secreta. Você precisa das chaves para criar os tokens de segurança posteriormente.

  5. Analise as permissões e as tags e selecione Criar usuário.

    Observação: isso cria um usuário do IAM com a política IAMUserChangePassword.

  6. Crie políticas do IAM para as ações desejadas a serem executadas no Amazon RDS.

  7. Adicione suas políticas do IAM ao seu usuário.

Exemplo de políticas do IAM

Os exemplos de políticas a seguir fornecem os privilégios mínimos necessários para realizar as ações especificadas. Você pode ver erros no console do Amazon RDS porque a permissão necessária não está presente na política. Por exemplo, você pode ver a mensagem de erro IAMUser is not authorized to perform: rds:Action.

Podem ocorrer erros nas ações de Descrição, mas o erro não afeta sua capacidade de realizar essas ações. Para evitar um erro, modifique o exemplo de políticas do IAM a seguir ou use a AWS CLI para realizar ações.

Crie e exclua instâncias de banco de dados do RDS

Para permitir que os usuários criem instâncias de banco de dados do RDS sem a criptografia ativada, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup"
      ],
      "Resource": "*"
    }
  ]
}

Para permitir que os usuários criem instâncias de banco de dados do RDS com criptografia ativada, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}

Observação: para usar uma chave gerenciada pelo cliente para criptografia, você deve autorizar o uso de uma chave gerenciada pelo cliente.

Para permitir que os usuários excluam instâncias de banco de dados do RDS, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:DeleteDBInstance",
        "rds:DescribeDBInstances"
      ],
      "Resource": "*"
    }
  ]
}

Para permitir que os usuários criem e excluam instâncias de banco de dados do RDS, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup",
        "rds:DeleteDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

Interrompa e execute instâncias de banco de dados do RDS

Para permitir que os usuários executem e interrompam instâncias de banco de dados do RDS, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:StopDBInstance",
        "rds:StartDBInstance",
        "rds:Describe*"
      ],
      "Resource": "*"
    }
  ]
}

Execute backup e recuperação

Para permitir que os usuários criem snapshots de banco de dados, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:Describe*",
        "rds:CreateDBSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

Para permitir que os usuários restaurem instâncias de banco de dados do RDS que usam snapshots de banco de dados, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:RestoreDBInstanceFromDBSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

Para permitir que os usuários realizem uma recuperação para um ponto no tempo, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:RestoreDBInstanceToPointInTime"
      ],
      "Resource": "*"
    }
  ]
}

Modificar instâncias de banco de dados RDS

Para permitir que os usuários alterem o tipo de classe de instância de banco de dados, o armazenamento alocado, o tipo de armazenamento e a versão da instância, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:ModifyDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

Ative o monitoramento avançado e do Performance Insights

Quando usado com um iam:PassRole, um curinga (*) é excessivamente permissivo porque ele autoriza permissões iam:PassRole em todos os recursos. É uma prática recomendada especificar os ARNs.

Para permitir que os usuários ativem o Monitoramento Avançado, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:ListRoles",
        "rds:ModifyDBInstance",
        "rds:Describe*",
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::AccountID:role/rds-monitoring-role"
    }
  ]
}

Observação: certifique-se de substituir AccountID por cada conta que está recebendo o perfil de monitoramento avançado.

Para permitir que os usuários ativem o Performance Insights, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:ModifyDBInstance",
        "ec2:Describe*",
        "rds:Describe*",
        "pi:*"
      ],
      "Resource": "*"
    }
  ]
}

Crie, modifique e exclua grupos de parâmetros de banco de dados e grupos de opções de banco de dados

Para permitir que os usuários criem, modifiquem ou excluam grupos de parâmetros e grupos de opções de banco de dados, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:CreateDBParameterGroup",
        "rds:ModifyDBParameterGroup",
        "rds:DeleteDBParameterGroup",
        "rds:CreateOptionGroup",
        "rds:ModifyOptionGroup",
        "rds:DeleteOptionGroup"
      ],
      "Resource": "*"
    }
  ]
}

Visualização das métricas do Amazon CloudWatch no console do Amazon RDS

Para permitir que os usuários visualizem as métricas do CloudWatch no console do Amazon RDS, use a seguinte política:

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:Describe*",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics"
      ],
      "Resource": "*"
    }
  ]
}

Informações relacionadas

Gerenciamento de identidade e acesso no Amazon RDS

Como permitir que os usuários se autentiquem em uma instância de banco de dados Amazon RDS para MySQL usando suas credenciais do Amazon IAM?