【问题标题】:Edit sql file to secure credentials during deployment of project in azure devOps在 azure devOps 中部署项目期间编辑 sql 文件以保护凭据
【发布时间】:2020-05-29 13:22:03
【问题描述】:

我正在使用open source tool 为我的仓库雪花部署架构。我已经成功地完成了表格、视图和过程。目前我面临一个问题,我必须以同样的方式部署雪花阶段。但是当您在 sql 文件中定义它时,阶段需要 url 和 azure saas 令牌,如下所示:

CREATE or replace STAGE myStage
URL = 'azure://xxxxxxxxx.blob.core.windows.net/'
CREDENTIALS = ( AZURE_SAS_TOKEN = 'xxxxxxxxxxxxxxxxxxxx' )
file_format = myFileFormat;

因为不鼓励在将发布在版本控制和其他人访问的文件中使用您的凭据。 azure devOps 中是否有方法/任务,所以我可以在 repo 中传递一个模板 SQL 文件并在编译和执行之前更改它(可能是通过 azure key vault)并改回模板?因此,这些凭据和令牌始终保持安全。

【问题讨论】:

    标签: azure-devops continuous-integration continuous-deployment snowflake-cloud-data-platform


    【解决方案1】:

    您是否考虑过使用存储集成?如果您使用存储集成凭据并将其授予您的 Blob 存储,那么您将能够创建 STAGE 对象而无需传递任何凭据。

    https://docs.snowflake.net/manuals/sql-reference/sql/create-storage-integration.html

    【讨论】:

    • 这样我也必须通过 ci/cd 进程部署存储集成,这将在我的 sql 文件中使用 azure_tenant_id 并进一步向其他人公开。您认为公开 azure_tenant_id 是否安全?
    • 嗯,根据您的安全模型的复杂性,您可能会预先创建一个集成对象,然后在您从 ci/ 创建的所有阶段定义中使用该集成对象cd 进程。
    【解决方案2】:

    对于这个问题,您可以使用无凭据阶段来保护您的云存储,而无需共享机密。

    这里同意 Mikestorage integrations,一种新的对象类型,允许 Snowflake 管理员在 Snowflake 和云提供商之间创建信任策略。当 Snowflake 连接到组织的云存储时,云提供商会通过此信任策略进行身份验证和授权访问。

    存储集成和无需凭据的外部阶段使管理员能够以安全且可管理的方式连接到存储。此功能现在在 Snowflake 中普遍可用。

    详情请参考document。此外,您还可以通过 azure key vault,key vault 为访问和存储机密提供了一个安全的地方。

    【讨论】:

    • 在阅读了您分享的有关存储集成的文档和博客后,我同意了。存储集成看起来很有希望,但我正在使用 ci/cd 管道并使用开源工具来完成所有这些工作。因此,我将不得不部署 storage integration 以及此过程和存储集成,如文档中所述,我必须在创建 azure_tenant_id 时定义它。这也会暴露给其他人。公开 azure_tenant_id 是否安全?
    猜你喜欢
    • 1970-01-01
    • 2019-10-26
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多