如何授予ECS容器访问私有git存储库的权限?

时间:2018-09-20 18:17:50

标签: git ssh deployment key amazon-ecs

我看了这篇文章:Github Deploy Keys

据我所读,它像对待一台固定机器的客户端一样对待客户端,该机器始终具有ssh设置来克隆存储库。但是,在ECS中,客户端计算机会发生变化。每次在每个容器上都要设置ssh吗?

我的问题是从AWS角度出发的,是否可以设置某种“角色”,以便每当我们部署服务时,它就可以访问私有github存储库?

2 个答案:

答案 0 :(得分:1)

  

容器中运行的代码需要调用github存储库。

这意味着容器必须以.ssh/id_rsa / .ssh_id_rsa.pub中的bind mount开头,以允许容器作为协作者向GitHub进行身份验证。

SSH并不是访问私有存储库的唯一方法:安装PAT(个人访问令牌)将允许容器使用HTTPS URL。

但是在两种情况下,容器都需要装入正确身份验证所需的文件,以便访问远程专用存储库。

答案 1 :(得分:1)

您可以将私钥内容存储在AWS Secrets Manager中。然后,您可以使用AWS CLI来访问它,例如:

aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-west-2:foocompany:secret:secret-name-X1cUDA | python -c 'import sys, json; print json.load(sys.stdin)["SecretString"]' > ~/.ssh/id_rsa
chmod 400 ~/.ssh/id_rsa

您可能需要类似于以下内容的设置秘密权限

{ "Version": "2012-10-17",
"Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Principal": {"AWS": "arn:aws:iam::foocompany:user/user"},
            "Resource": "arn:aws:secretsmanager:us-west-2:238513131754:secret:arn:aws:secretsmanager:us-west-2:foocompany:secret:secret-name-X1cUDA"
        }
    ]
}