Предоставить пользователю IAM доступ к одному экземпляру RDS

Я создал экземпляр RDS и хочу предоставить одному из моих пользователей доступ к этому экземпляру RDS. Мне интересно, как я могу дать это разрешение.

Я предоставил RDSFULLACESS в политике присоединения моего пользователя IAM, затем имитирую его следующим образом:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "rds:*",
            "cloudwatch:DescribeAlarms",
            "cloudwatch:GetMetricStatistics",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs",
            "sns:ListSubscriptions",
            "sns:ListTopics",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
    }
]
}

Но мой пользователь все еще не может получить доступ к этому экземпляру RDS, в чем проблема? он может сделать это сам, но я не хочу, чтобы он сделал еще один!

Любая помощь будет оценена.

1 ответ

Решение

Если приведенная выше политика имеет правильный ARN для базы данных и привязана к пользователю IAM, то она разрешит полные действия по управлению базой данных RDS, такие как остановка базы данных или восстановление резервной копии.

Чтобы явно исключить разрешения "Создать", на основе списка на этой странице http://docs.aws.amazon.com/IAM/latest/UserGuide/list_rds.html включите все необходимые разрешения, например. В этом контексте "Запретить" всегда превосходит "Разрешить". Разрешения "Создать" приемлемы по сравнению с уже существующей базой данных, но не применяются в других местах.

    {
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "rds:*",
            "cloudwatch:DescribeAlarms",
            "cloudwatch:GetMetricStatistics",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcs",
            "sns:ListSubscriptions",
            "sns:ListTopics",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
    },
    {
      "Effect": "Deny",
      "Action": [
        "rds:Create*"
      ],
      "NotResource": [
         "arn:aws:rds:eu-west-1:accountIDofIAMUser:db:instancename"
       ] 
    }
    ]
    }

Я не проверял эту политику, это просто пример

Если пользователю необходим доступ к базе данных в качестве потребителя данных, то таким образом это не управляется. Они должны иметь две вещи для этого

# сетевой доступ к экземпляру RDS через правильную сеть и правильную настройку групп безопасности

# учетные данные пользователя для базы данных

Для mysql процесс первоначального подключения описан здесь http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html

Пожалуйста, ознакомьтесь с политикой ниже для однопользовательского однопользовательского доступа с запуском и остановкой.

Создайте политику ниже и укажите rds arn в разделе ресурсов.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "rds:AddTagsToResource",
                "rds:ListTagsForResource",
                "rds:DescribeDBSnapshots",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBParameters",
                "rds:DescribeDBParameterGroups",
                "rds:StopDBInstance",
                "rds:StartDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:us-east-1:accountnumber:db:dbidentifier"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "rds:DescribeDBClusterSnapshots",
                "rds:DescribeDBInstances"
            ],
            "Resource": "*"
        }
    ]
}

Прикрепите эту политику к пользователю, которому вы хотите предоставить доступ.

Другие вопросы по тегам