Я пытаюсь защитить экземпляр ec2 с помощью групп безопасности, чтобы сделать следующее
VPC A (Account - A, Region - A)
VPC B (Account - B, Region - B)
Я хочу, чтобы экземпляр ec2 в VPC A имел доступ к репозиториям ecr в VPC B через HTTPS. Поскольку оба VPC находятся в разных регионах, я не могу использовать конечные точки VPC для этого. Я бы предпочел не просто разрешить весь блок CIDR VPC B, а только этот конкретный ресурс.
Как я могу это сделать?
Я думаю, что лучшим вариантом может быть использование Политика ECR чтобы разрешить доступ между аккаунтами. Репозитории ECR не используются по умолчанию, вы должны предоставить доступ.
ECR отсутствует в вашем VPC, и, судя по памяти, я не думаю, что AWS публикует диапазон IP-адресов ECR, поэтому я думаю, что в вашем случае вам нужно предоставить вашему экземпляру https-доступ к 0.0.0.0/0. Если вы хотите ограничить это, вам, возможно, придется использовать прокси, например squid, который знает домен, аналогично тому, как вы использовали бы шлюз / экземпляр NAT.
Недавно мы спросили AWS Support о конечных точках VPC для кросс-аккаунта ECR. Они сказали нам, что конечные точки VPC используются внутри учетной записи, а не для перекрестной учетной записи. Я не тестировал это, но, насколько я помню, они нам сказали, но это стоит проверить, чтобы убедиться. Поэтому я думаю, что доступ между регионами и кросс-аккаунтами должен осуществляться через Интернет, и единственный способ ограничить доступ к ECR - использовать политику, на которую я ссылался выше.
Эта политика со страницы выше разрешает доступ к нескольким аккаунтам.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowCrossAccountPush",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account-id:root"
},
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchCheckLayerAvailability",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
]
}
]
}