Действительно ли возможно ограничить доступ консоли EC2 к машинам в определенном VPC через, я?

Существует два основных подхода для этой проблемы, о которой я знаю. Во-первых при выполнении InnoDB вместо Myisam затем можно сделать резервное копирование в транзакции (-единственная транзакция - lock-tables=FALSE), который объединился с - журналы сброса (не требуемый, но хороший) и - основные данные дадут Вам последовательное резервное копирование с информацией о положении репликации. Журналы сброса сбросят журналы, прежде чем дамп будет создан, что означает, что положение всегда будет 106, и - основные данные исправят имя файла журнала и положение в файле дампа. Конечно, необходимо выполнить это на ведущем устройстве для - основные данные для работы.

Второй путь, который Вы упомянули, состоит в том, чтобы использовать третий хост для создания резервных копий. В этом случае необходимо остановить репликацию, удостоверьтесь, что DB является read_only (хотя действительно, все копии должны быть только для чтения, так как это не производит записи от репликации), и затем создайте резервное копирование И запишите положение репликации. Вы не можете использовать - основные данные в этом случае. Вместо этого Вы могли бы сделать что-то вроде этого:

echo 'stop slave' | mysql {options)
mysqldump {your options} > DB.sql
echo 'show slave status\G' > DB.replication
echo 'start slave' | mysql {options)

Если бы когда-нибудь необходимо восстанавливать от этого резервного копирования, Вы выполнили бы восстановление и затем установили бы репликацию, куда эти два параметра master_log_file и master_log_pos прибывают из файла DB.replication:

master_log_file = value of Master_Log_File
master_log_pos = value of Exec_Master_Log_Pos

Примечание: Вы можете И ДОЛЖНЫ протестировать это от другой копии.

Дополнительное примечание: если у Вас есть пул копий (например, при разделении чтений от записей для веб-приложения), для копий возможно быть вне синхронизации с новым ведущим устройством; это может произойти, если обработка отказа происходит в течение периода тяжелой записи ввод-вывод так как поток копий асинхронно и нет никакой гарантии, что Ваше резервное устройство в той же позиции других копий когда Вы обработка отказа. Однако этого еще не произошло со мной...

1
задан 4 March 2014 в 18:14
1 ответ

Got back from Amazon Support:

Unfortunately, there is not a way to do this at this time. While we do now offer resource level permissions for EC2 resources, (more info here... http://aws.typepad.com/aws/2013/07/resource-permissions-for-ec2-and-rds-resources.html) условное управление доступом на основе указанного VPC не supported.

They mentioned this is because this link: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resources show that there are a limited number of EC2 API actions supported and none of them support VPC as a ARN.

There's also a limitation on "ec2:Describe*", which cannot be specified by a resource ARN at all, and cannot be conditionally controlled.

There's a workaround using the conditional statement "ResourceTag/tag-key" which is usable by most API calls. So you can potentially tag your instances with "Control":"Allow" and don't include the create or remove tag privileges in the policy to be attached to the user in question. Your policy would look like this:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Control": "Allow"
                }
            }
        }
    ]
}

Then you can restrict the user to launch instance just in a particular VPC using its subnet-id:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:region:account:instance/*",
                "arn:aws:ec2:region:account:subnet/SUBNET-ID-HERE",
                "arn:aws:ec2:region:account:volume/*",
                "arn:aws:ec2:region:account:network-interface/*",
                "arn:aws:ec2:region:account:key-pair/*",
                "arn:aws:ec2:region:account:security-group/*",
                "arn:aws:ec2:region::image/ami-*"
            ]
        }
    ]
}

Hope this helps.

4
ответ дан 3 December 2019 в 17:45

Теги

Похожие вопросы