![AWS - 以安全的方式访问跨账户和跨区域资源](https://linux22.com/image/755335/AWS%20-%20%E4%BB%A5%E5%AE%89%E5%85%A8%E7%9A%84%E6%96%B9%E5%BC%8F%E8%AE%BF%E9%97%AE%E8%B7%A8%E8%B4%A6%E6%88%B7%E5%92%8C%E8%B7%A8%E5%8C%BA%E5%9F%9F%E8%B5%84%E6%BA%90.png)
我正在尝试使用安全组保护 ec2 实例以执行以下操作
VPC A (Account - A, Region - A)
VPC B (Account - B, Region - B)
我希望 VPC A 中的 ec2 实例能够通过 HTTPS 访问 VPC B 中的 ecr 存储库。由于两个 VPC 位于不同的区域,因此我无法使用 VPC 端点来实现这一点。我宁愿不仅允许 VPC B 的整个 CIDR 块,还允许此特定资源。
我怎能做这样的事?
答案1
我认为你最好的选择可能是使用ECR 政策允许跨账户访问。默认情况下,ECR 存储库不共享,您必须授予访问权限。
ECR 不在您的 VPC 中,而且我记得 AWS 不会发布 ECR IP 范围,因此我认为您需要让您的实例具有对 0.0.0.0/0 的 https 访问权限。如果您想限制这一点,您可能必须使用像 squid 这样的可感知域的代理,其方式类似于您使用 NAT 网关/实例的方式。
我们最近向 AWS Support 询问了跨账户 ECR 的 VPC 端点。他们告诉我们 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"
]
}
]
}