- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Azure 机器学习服务和 pipeline functionality用于我的机器学习模型的数据准备、训练和测试。然而,在我的数据准备步骤中,我需要连接到一个数据库,我想找到一种方法来传递我的 secret 密码或 key ,而不用将它们以纯文本形式写入我的脚本文件中。
在本地,我利用环境变量来使用 secret 密码和 key ,但据我所知,这在管道基础设施中是不可能的,因为 Conda 不支持传递环境变量。如果有人能证实或否认这一点,那将会很有帮助。
在 Azure 门户的 Azure 机器学习服务中,我发现了一个“ key 保管库”资源,它是在我创建“机器学习服务工作区”资源时自动创建的。这似乎正是我所需要的。是吗?如果可以,我该如何使用它?
如果以上都不能解决我的问题,是否有任何其他方法可以在我的脚本中安全地使用 secret 密码和 key ,而无需在脚本中以纯文本形式编写它们?
编辑:我意识到我的问题非常关注数据库连接。然而,问题实际上是关于任何类型的 secret 或密码,而不仅仅是数据库凭证。正如在回答中指出的那样,这里值得一提的是,Azure SQL 数据库连接可以(并且应该)使用 DataTransferStep 来解决。 .
最佳答案
您可以通过arguments
参数传递凭证,而不是使用环境变量:
pipeline_step = PythonScriptStep(
script_name='train.py',
arguments=['--keyvault_name', 'MyKV', '--secret_name', 'MyPW'], ...
并在train.py
中定义脚本参数如下:
parser = argparse.ArgumentParser('train')
parser.add_argument('--keyvault_name')
parser.add_argument('--secret_name')
args = parser.parse_args()
然后您可以在脚本中使用变量 args.keyvault_name
和 args.secret_name
。您可以使用这些值从 Key Vault 中读取密码。当然,您必须先创建 Key Vault 并将密码存储在那里。此外,您还必须确保 AML Workspace 具有从 Key Vault 读取 secret 的权限。
当然,您也可以在脚本参数中以纯文本形式传递密码,但这是不可取的。
关于azure-machine-learning-service - 如何在 Azure 机器学习服务管道中使用 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109316/
我是一名优秀的程序员,十分优秀!