Py学习  »  机器学习算法

如何在azure机器学习服务管道中使用密钥

Arvid Bäärnhielm • 4 年前 • 622 次点击  

我正在使用azure机器学习服务和 pipeline functionality 用于我的机器学习模型的数据准备、培训和测试。但是,在我的数据准备步骤中,我需要连接到一个数据库,我想找到一种方法来传递我的秘密密码或密钥,而不必在脚本文件中以纯文本形式编写它们。

在本地,我使用环境变量来使用秘密密码和密钥,但据我所知,这在管道基础设施中是不可能的,因为conda不支持传递环境变量。如果有人可以证实或否认,这将是有益的。

在azure门户中的azure机器学习服务中,我找到了一个“密钥保管库”资源,该资源是在创建“机器学习服务工作区”资源时自动创建的。这似乎正是我所需要的。它是?如果是,我该如何使用它?

如果以上两种方法都不能解决我的问题,是否还有其他方法可以安全地在脚本中使用密码和密钥,而不在脚本中以纯文本形式编写它们?

编辑:我意识到我的问题主要集中在数据库连接上。然而,问题实际上是关于任何类型的机密或密码,而不仅仅是数据库凭据。正如在回答中指出的那样,这里值得一提的是,可以使用(或应该)使用 DataTransferStep .

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43674
 
622 次点击  
文章 [ 3 ]  |  最新文章 4 年前
Roope Astala - MSFT
Reply   •   1 楼
Roope Astala - MSFT    4 年前

现在支持通过azure ml.core.keyvault.keyvault对象向远程运行传递机密(从azure ml sdk版本1.0.57开始):

请参阅“在远程运行中使用机密”部分 in this notebook

Roope Astala - MSFT
Reply   •   2 楼
Roope Astala - MSFT    5 年前

你用什么样的数据库?如果是azure sql,则可以使用datatransferstep而不是传递机密。相关类别包括:

DataTransferStep

DataReference

AzureSqlDataBaseDataStore

Lazer
Reply   •   3 楼
Lazer    4 年前

不使用环境变量,只需通过 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 在你的剧本里。您可以使用这些值从密钥库中读取密码。当然,您必须首先创建密钥库并将密码存储在那里。此外,还必须确保AML Workspace具有从密钥保管库读取机密的权限。

当然,您也可以在脚本参数中以纯文本形式传递密码,但这是不可取的。