你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Azure Database for PostgreSQL 的 Azure AI 扩展支持将系统分配的托管标识(SAMI)与 Azure AI 服务、Azure OpenAI 和 Azure 机器学习配合使用,为客户提供增强的安全优势。 通过使用 Microsoft Entra ID,用户可以在没有访问密钥的情况下进行身份验证,从而减少未经授权的访问和简化凭据管理的风险。 此集成可确保安全高效地处理标识和权限,从而为数据库安全性提供可靠的框架。
订阅密钥权益
- 无需存储机密 – 无需手动管理或轮换订阅密钥。
- 改进了安全性 - 在日志或代码存储库中不公开 API 密钥的风险。
- 更简单的维护 – Azure 在后台处理身份验证,从而减少作开销。
创建系统分配的托管标识
- 导航到 Azure 门户。
- 在门户中选择你的 Azure Database for PostgreSQL 灵活服务器实例。
- 启用托管标识:
- 在服务器概述页的左侧导航菜单中,展开 “安全性 ”并选择“ 标识”。
- 为“系统分配的托管标识”选择“开”单选按钮。
- 选择 “保存 ”以启用托管标识。
要详细了解它,请访问托管标识
分配托管标识
- 转到 Azure 门户并选择 Azure AI 服务资源。
- 在菜单中,选择“访问控制”(IAM)。
- 选择 “添加 ”,然后选择 “添加角色分配”。
- 选择 认知服务用户的角色。
- 在“成员”部分中,选择“托管标识”。
- 选择 PostgreSQL 服务器的订阅和托管标识。
- 选择“保存”以分配该角色。
- 返回到服务器的“概述”页,然后单击“重启”按钮重新启动服务器。
要了解详细信息,请访问使用 Azure AI 服务的托管标识
Azure OpenAI 的访问控制 (IAM)
- 转到 Azure 门户,选择在订阅中部署的 Azure OpenAI 资源。 若要快速识别资源,可以按类型(Azure OpenAI)筛选资源。
- 在资源的菜单中,选择“访问控制”(IAM)。
- 选择 “添加 ”,然后选择 “添加角色分配”。
- 选择 认知服务 OpenAI 用户的角色。
- 在“成员”部分中,选择“托管标识”。
- 选择 PostgreSQL 服务器的订阅和托管标识。
- 选择“保存”以分配该角色。
若要了解详细信息,请访问 Azure OpenAI 的 Managed Identity
Azure 机器学习的访问控制 (IAM)
- 转到 Azure 门户并选择 Azure 机器学习资源。
- 在资源的菜单中,选择“访问控制”(IAM)。
- 选择 “添加 ”,然后选择 “添加角色分配”。
- 选择 Azure 机器学习数据科学家的角色。
- 在“成员”部分中,选择“托管标识”。
- 选择 PostgreSQL 服务器的订阅和托管标识。
- 选择“保存”以分配该角色。
- 确保将模型终结点的身份验证类型选为 Microsoft Entra 令牌。
更新azure_ai中的数据库授权设置
需要更新数据库授权设置,以配置用于 PostgreSQL 的 Azure AI 扩展以使用托管标识或订阅密钥身份验证。 此过程可确保使用 Azure AI 服务、Azure OpenAI 或 Azure 机器学习正确验证扩展。 按照以下步骤设置用例的相应授权类型和终结点。
将授权类型设置为托管标识
- 对于 OpenAI,请执行以下 SQL 命令:
SELECT azure_ai.set_setting('azure_openai.auth_type', 'managed-identity');
- 对于认知服务,请执行以下 SQL 命令:
SELECT azure_ai.set_setting('azure_cognitive.auth_type', 'managed-identity');
- 如果使用翻译服务,则需要通过执行以下 SQL 命令来设置翻译资源的资源 ID:
SELECT azure_ai.set_setting('azure_cognitive.translator_resource_id', '<Your_translator_resource_id>');
- 对于机器学习服务,请执行以下 SQL 命令:
SELECT azure_ai.set_setting('azure_ml.auth_type', 'managed-identity');
设置终结点
- 对于 Azure OpenAI,请执行以下 SQL 命令来设置终结点:
SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<Your_openai_account>.openai.azure.com');
验证设置
配置 PostgreSQL 的 Azure AI 扩展后,请务必确认设置已正确应用。 验证设置可确保正确配置集成,并准备好与 Azure AI 服务、Azure OpenAI 或 Azure 机器学习进行交互。 使用以下 SQL 命令检查当前配置,并验证正确的授权类型和终结点是否已到位。
SELECT azure_ai.get_setting('azure_openai.auth_type');
SELECT azure_ai.get_setting('azure_openai.endpoint');
测试配置
设置托管标识并配置 PostgreSQL 的 Azure AI 扩展后,验证集成是否按预期工作至关重要。 测试可确保数据库能够使用 Azure AI 服务、Azure OpenAI 和 Azure 机器学习成功进行身份验证。 以下示例演示如何执行示例函数调用来验证配置并确认服务函数没有授权错误。
SELECT azure_cognitive.analyze_sentiment('Your text here');
确保函数在没有任何授权错误的情况下成功执行。
测试 OpenAI 服务
测试 OpenAI 服务可确保 PostgreSQL 的 Azure AI 扩展与 Azure OpenAI 之间的集成正常运行。 通过执行示例函数调用,可以验证托管标识或订阅密钥身份验证是否已正确配置,并且数据库可以成功与 OpenAI 模型交互。 按照以下示例测试嵌入的创建功能,并确认该服务在没有授权错误的情况下工作。
SELECT azure_openai.create_embeddings('Your model deployment name', 'Your text here');
确保函数在没有任何授权错误的情况下成功执行。
测试机器学习服务
测试机器学习服务可确保 PostgreSQL 的 Azure AI 扩展与 Azure 机器学习之间的集成按预期运行。 可以通过执行示例函数调用来验证托管标识或订阅密钥身份验证是否正确配置。 此步骤确认数据库可以成功与已部署的机器学习模型交互,从而无缝执行预测或其他模型作。 使用以下示例测试模型调用功能,并验证服务是否在未授权错误的情况下工作。
SELECT azure_ml.invoke('Your model input', 'Your model deployment name');
确保函数在没有任何授权错误的情况下成功执行。
SELECT azure_ml.invoke('Your model input', 'Your model deployment name');
确保函数在没有任何授权错误的情况下成功执行。
订阅密钥身份验证
如果需要还原为使用订阅密钥身份验证,请执行以下步骤。 如果要切换回使用订阅密钥进行身份验证而不是托管标识,这非常有用。
连接到 PostgreSQL 数据库
使用首选 PostgreSQL 客户端连接到数据库。
设置订阅密钥授权类型
- 对于 OpenAI,请执行以下 SQL 命令:
SELECT azure_ai.set_setting('azure_openai.auth_type', 'subscription-key');
SELECT azure_ai.set_setting('azure_openai.endpoint','https://<Your_OpenAI_Endpoint>');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '<Key>');
- 对于认知服务,请执行以下 SQL 命令:
SELECT azure_ai.set_setting('azure_cognitive.auth_type', 'subscription-key');
SELECT azure_ai.set_setting('azure_cognitive.endpoint','https://<endpoint>.cognitiveservices.azure.com');
SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '<Key>');
- 对于机器学习服务,请执行以下 SQL 命令:
SELECT azure_ai.set_setting('azure_ml.auth_type', 'subscription-key');
SELECT azure_ai.set_setting('azure_ml.scoring_endpoint','<URI>');
SELECT azure_ai.set_setting('azure_ml.endpoint_key', '<Key>');