Dol*_*hin 1 firewall github github-actions
现在我使用 github actions 作为我的项目 CI,我想在使用 github actions 构建我的项目时做一些单元测试。当我使用单元测试时,项目必须使用数据库,现在我的数据库有白名单,只有白名单中的IP才能连接我的数据库,但是现在在GitHub Actions中运行单元测试时,我不知道GitHub Actions的IP地址. 是否可以使用静态 ip 或任何其他方式来解决问题?我不希望任何 IP 可以连接我的数据库,它可能有安全问题。有什么建议吗?
您可以在工作流程中使用public-ip 操作动态检索 GitHub Actions 运行器的 IP 地址,并在单元测试步骤之前和之后更新 RDS 实例的安全组入口规则。
这将允许您在工作流程中使用 GitHub 的托管运行器,而不是托管您自己的运行器。
注意:您还需要在运行器上设置 AWS 凭证,并具有更新关联安全组的权限。此外,您还需要确保 RDS 实例位于公共子网中,并附加了 Internet 网关和安全组。
您的工作流程应该如下所示:
deploy:
name: deploy
runs-on: ubuntu-latest
env:
AWS_INSTANCE_SG_ID: <your-rds-subnet-sg-id>
steps:
- name: configure aws credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: <your-ci-aws-access-key>
aws-secret-access-key: <your-ci-aws-secret-key>
aws-region: <your-rds-aws-region>
- name: get runner ip addresses
id: ip
uses: haythem/public-ip@v1.2
- name: whitelist runner ip address
run: |
aws ec2 authorize-security-group-ingress \
--group-id $AWS_INSTANCE_SG_ID \
--protocol tcp \
--port 22 \
--cidr ${{ steps.ip.outputs.ipv4 }}/32
- name: connect to your rds instance and run tests
run: |
...run tests...
- name: revoke runner ip address
run: |
aws ec2 revoke-security-group-ingress \
--group-id $AWS_INSTANCE_SG_ID \
--protocol tcp \
--port 22 \
--cidr ${{ steps.ip.outputs.ipv4 }}/32
Run Code Online (Sandbox Code Playgroud)
理想情况下,您可以在与 RDS 实例相同的 VPC 内的 EC2 中运行集成测试,以避免公开暴露您的 RDS 实例。
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |