AWS - 以安全的方式访问跨账户和跨区域资源

AWS - 以安全的方式访问跨账户和跨区域资源

我正在尝试使用安全组保护 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"
            ]
        }
    ]
}

相关内容