管理访问另一个 SQL 服务器的 SSIS 包的安全性 - 最佳实践
Managing security for an SSIS package accessing another SQL server - best practice
假设我必须创建一个 SSIS 包并将其部署到 sql 服务器(将其命名为 SQL1)从另一个 sql 服务器加载一些数据(SQL 2).在 SQL 我也想创建一个作业来执行这个包。让我们假设其他不受信任的人也可以在此服务器上创建 SSIS 包和作业,他们不允许从这里访问 SQL2 数据库。
但首先我想我必须授予一些权限才能让我的工作访问 SQL2 上所需的数据库。问题从这里开始 - 如何?
- 我在名为“NT SERVICE\SQLSERVERAGENT”的服务用户 SQL1 上看到 SSIS 作业 运行s,这似乎是本地用户(但我不知道不理解 NT SERVICE\ 前缀)- 我如何在 SQL2 上为该用户添加权限?
- 据我所知,我可以将 SQL1 代理更改为 运行 作为定义的 AD 服务用户 - 但这会影响 SQL1 上的所有 SSIS 作业 -看起来很糟糕
- 我可以在 SQL1 上添加一个 AD 服务用户帐户作为凭据和代理,并让 SSIS 作为该用户 运行 执行
- 其他方式?哪种方式是最佳做法?
那么在不涉及广告服务用户的情况下,我可以解决这个问题吗?对我而言,#1 解决方案不需要其他服务用户 - 但需要#2 和#3。
安全级别:我能否解决这个问题而不让另一个不受信任的人轻松地重新使用在 SQL1 上为我自己的 SSIS 授予的权限?正如我所见,#1 非常糟糕——在这种情况下,SQL1 上的所有 SSIS 包都可以访问 SQL2。在案例 #2 中——出于同样的原因,它似乎也很糟糕。在 #3 案例中 - 由于凭证和代理在 SQL1 上是“public”,每个人都可以为他自己的 SSIS 的步骤分配此代理 - 所以看起来很糟糕。
也许我的问题没有很好的解决方案 - 就在我使用全新的 SQL 服务器而不让其他不受信任的人访问它时?
非常感谢您阅读有关此主题的任何建议或文章!谢谢!
使用 SQL 服务器代理 运行 宁 SSIS 包的最佳做法是 SQL 服务器代理是 运行 域帐户(实际上这是所有 SQL 服务器服务的最佳实践,您永远不应在生产环境中使用默认值)并为 运行 SSIS 包创建凭据和代理帐户。
从安全的角度来看,您可以在 SSIS-package 中创建到 SQL2 的连接,并使用硬编码的用户和密码提供连接。为了保护凭据,您可以使用适合您的包保护级别(密码保护可能是最简单的):https://docs.microsoft.com/en-us/sql/integration-services/security/access-control-for-sensitive-data-in-packages?view=sql-server-ver15#protection-levels
假设我必须创建一个 SSIS 包并将其部署到 sql 服务器(将其命名为 SQL1)从另一个 sql 服务器加载一些数据(SQL 2).在 SQL 我也想创建一个作业来执行这个包。让我们假设其他不受信任的人也可以在此服务器上创建 SSIS 包和作业,他们不允许从这里访问 SQL2 数据库。
但首先我想我必须授予一些权限才能让我的工作访问 SQL2 上所需的数据库。问题从这里开始 - 如何?
- 我在名为“NT SERVICE\SQLSERVERAGENT”的服务用户 SQL1 上看到 SSIS 作业 运行s,这似乎是本地用户(但我不知道不理解 NT SERVICE\ 前缀)- 我如何在 SQL2 上为该用户添加权限?
- 据我所知,我可以将 SQL1 代理更改为 运行 作为定义的 AD 服务用户 - 但这会影响 SQL1 上的所有 SSIS 作业 -看起来很糟糕
- 我可以在 SQL1 上添加一个 AD 服务用户帐户作为凭据和代理,并让 SSIS 作为该用户 运行 执行
- 其他方式?哪种方式是最佳做法?
那么在不涉及广告服务用户的情况下,我可以解决这个问题吗?对我而言,#1 解决方案不需要其他服务用户 - 但需要#2 和#3。
安全级别:我能否解决这个问题而不让另一个不受信任的人轻松地重新使用在 SQL1 上为我自己的 SSIS 授予的权限?正如我所见,#1 非常糟糕——在这种情况下,SQL1 上的所有 SSIS 包都可以访问 SQL2。在案例 #2 中——出于同样的原因,它似乎也很糟糕。在 #3 案例中 - 由于凭证和代理在 SQL1 上是“public”,每个人都可以为他自己的 SSIS 的步骤分配此代理 - 所以看起来很糟糕。
也许我的问题没有很好的解决方案 - 就在我使用全新的 SQL 服务器而不让其他不受信任的人访问它时?
非常感谢您阅读有关此主题的任何建议或文章!谢谢!
使用 SQL 服务器代理 运行 宁 SSIS 包的最佳做法是 SQL 服务器代理是 运行 域帐户(实际上这是所有 SQL 服务器服务的最佳实践,您永远不应在生产环境中使用默认值)并为 运行 SSIS 包创建凭据和代理帐户。
从安全的角度来看,您可以在 SSIS-package 中创建到 SQL2 的连接,并使用硬编码的用户和密码提供连接。为了保护凭据,您可以使用适合您的包保护级别(密码保护可能是最简单的):https://docs.microsoft.com/en-us/sql/integration-services/security/access-control-for-sensitive-data-in-packages?view=sql-server-ver15#protection-levels