Gitlab CI/CD通过aws-azure-cli认证部署AWS的替代方案咨询
替代GitLab CI AWS认证方案
临时应急方案(无需等待云团队)
复用本地临时AWS凭证
从本地工作站导出已通过aws-azure-cli获取的临时AWS凭证(包含AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN三个变量),手动添加到GitLab CI/CD的受保护变量中。这类凭证8小时过期,到期后需重新导出更新,但可作为等待期间的临时解决办法。
本地获取凭证命令:aws configure get aws_access_key_id aws configure get aws_secret_access_key aws configure get aws_session_tokenCI容器内自动化
aws-azure-cli登录
在CI job脚本中安装aws-azure-cli,通过变量传入敏感信息完成自动化2FA认证(注意所有敏感变量需设为掩码+受保护,仅限指定分支使用):
示例CI脚本片段:deploy_job: image: python:3.9 script: - pip install aws-azure-cli - apt-get update && apt-get install -y oathtool # 生成TOTP验证码 - TOTP_CODE=$(oathtool --totp -b $AZURE_TOTP_SECRET) # 登录获取AWS临时凭证 - aws-azure-cli login --username $AZURE_USERNAME --password $AZURE_PASSWORD --totp $TOTP_CODE # 执行部署操作 - aws s3 sync ./dist s3://your-deploy-bucket
长期合规方案(需云团队配合)
- GitLab OIDC对接AWS IAM角色
让云团队配置AWS IAM信任GitLab作为OIDC身份提供商,CI job可直接通过OIDC临时获取IAM角色权限,无需存储任何长期密钥。配置完成后,CI脚本示例:
该方案无需管理密钥,权限由IAM角色严格管控,是安全合规的最佳实践。deploy_job: id_tokens: AWS_ID_TOKEN: aud: https://aws.amazon.com script: - ASSUME_ROLE_OUTPUT=$(aws sts assume-role-with-web-identity --role-arn arn:aws:iam::YOUR_ACCOUNT_ID:role/GitLabCI-Deploy-Role --role-session-name GitLabCI --web-identity-token $AWS_ID_TOKEN --duration-seconds 3600) - export AWS_ACCESS_KEY_ID=$(echo $ASSUME_ROLE_OUTPUT | jq -r '.Credentials.AccessKeyId') - export AWS_SECRET_ACCESS_KEY=$(echo $ASSUME_ROLE_OUTPUT | jq -r '.Credentials.SecretAccessKey') - export AWS_SESSION_TOKEN=$(echo $ASSUME_ROLE_OUTPUT | jq -r '.Credentials.SessionToken') # 执行部署 - aws s3 sync ./dist s3://your-deploy-bucket
内容的提问来源于stack exchange,提问作者gwicks
相关产品推荐
相关产品推荐

