从 Azure DevOps 托管代理访问 Amazon RDS Postgresql

Accessing Amazon RDS Postgresql from Azure DevOps Hosted Agent

如何允许 Azure DevOps Hosted Agent 访问我的 Amazon RDS PostgreSql 而无需将安全组设置为 Anywhere。我一直在寻找 IP 范围或其他东西以将 Azure DevOps 代理列入白名单,但找不到。

在 Azure 中,我可以选中一个框以授予所有 "Azure DevOps Services" 对我的 Azure SQL 数据库的访问权限,但当然它在 AWS 中不存在。

用于托管代理 IP 范围的 IP 已链接 through here。我将它用于托管代理并没有取得多大成功。该列表 并且文档并不清楚您需要将哪些类型的服务列入白名单。

我会在管道 运行 期间及时将托管代理 IP 列入白名单,然后将其删除作为最后一步。首先你可以获取托管代理的ip:

$hostedIPAddress = Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

然后您可以使用 AWS CLI 或 AWS PowerShell 模块添加特定 IP。 Azure DevOps AWS tools 任务包括 CLI。

对数据库执行所需的工作,然后确保在最后清理 rule\temp 安全组。

我认为我们不能直接从 Azure DevOps 托管代理访问 Amazon RDS PostgreSql,我的意思是使用托管服务帐户。

但是,Amazon RDS for PostgreSQL Supports User Authentication with Kerberos and Microsoft Active Directory,所以我们可以尝试编写脚本来使用特定的凭据访问它。然后通过添加相应的任务(例如 AWS CLI 或 AWS PowerShell)运行 管道中的脚本。

同时勾选 How do I allow users to connect to Amazon RDS with IAM credentials?

IP范围请参考Allowed address lists and network connections and Microsoft-hosted Agents