Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用服务主体从数据库连接到Azure SQL数据库_Azure_Azure Sql Database_Azure Databricks_Service Principal - Fatal编程技术网

使用服务主体从数据库连接到Azure SQL数据库

使用服务主体从数据库连接到Azure SQL数据库,azure,azure-sql-database,azure-databricks,service-principal,Azure,Azure Sql Database,Azure Databricks,Service Principal,我需要通过服务主体从Azure Databricks连接到Azure SQL数据库。尝试搜索论坛,但找不到正确的方法。非常感谢您的帮助 在JDBC连接中使用SQL用户ID和密码尝试了类似的方法,结果成功。现在研究服务主体方法 注意:SP ID和密钥应该放在Azure密钥库中,需要在DataRicks上访问。也许您可以参考本教程: 摘要: Azure SQL是一项很棒的服务——您可以将数据库放入云中,而不必管理所有讨厌的服务器内容。然而,Azure SQL的一个问题是您必须使用SQL身份验证进行身

我需要通过服务主体从Azure Databricks连接到Azure SQL数据库。尝试搜索论坛,但找不到正确的方法。非常感谢您的帮助

在JDBC连接中使用SQL用户ID和密码尝试了类似的方法,结果成功。现在研究服务主体方法


注意:SP ID和密钥应该放在Azure密钥库中,需要在DataRicks上访问。

也许您可以参考本教程:

摘要

Azure SQL是一项很棒的服务——您可以将数据库放入云中,而不必管理所有讨厌的服务器内容。然而,Azure SQL的一个问题是您必须使用SQL身份验证进行身份验证—用户名和密码。但是,您也可以通过Azure Active Directory(AAD)令牌进行身份验证。这类似于使用Windows身份验证的集成登录,但您使用的不是Active Directory,而是AAD

AAD身份验证有许多优点:

  • 您不再需要共享登录,因为用户使用其AAD凭据登录,所以审计更好
  • 您可以使用AAD组管理对数据库的访问
  • 您可以通过服务主体启用“应用”登录
  • 为了使其正常工作,您需要:

  • 在Azure SQL Server上启用AAD身份验证
  • 服务负责人
  • 向数据库添加登录,授予服务主体所需的任何权限
  • 添加代码以获取用于访问数据库的身份验证令牌
  • 但在本文中,作者将介绍如何创建服务主体、为AAD auth配置数据库、创建用于检索令牌的代码以及为AAD auth配置EF DbContext


    仍然希望本教程能有所帮助。

    Azure密钥保管库支持Azure Databricks

    您可以使用 关于在Databricks中必须执行的操作的示例,请参见

    如您所见,我们不是直接与服务主体连接,而是使用服务主体生成访问令牌,稍后在指定连接参数时将使用该令牌:

              jdbc_df = spark.read.format("com.microsoft.sqlserver.jdbc.spark") \
              .option("url", url) \
              .option("dbtable", db_table) \
              .option("accessToken", access_token) \
              .option("encrypt", "true") \
              .option("databaseName", database_name) \
              .option("hostNameInCertificate", "*.database.windows.net") \
              .load() 
    
    但如果您不能或不想使用以前的库,也可以使用Spark的本机Azure SQL JDBC连接器:

              jdbc_df = spark.read.format("com.microsoft.sqlserver.jdbc.SQLServerDriver")\
              .option("url", url) \
              .option("dbtable", db_table) \
              .option("accessToken", access_token) \
              .option("encrypt", "true") \
              .option("databaseName", database_name) \
              .option("hostNameInCertificate", "*.database.windows.net") \
              .load() 
    

    请编辑您的答案,并将解释与代码块正确分开。如果您能提供完整的解决方案,请使用@GauravGangwar!Thanks@SDR你找到解决办法了吗?如果是,请与我们分享?
              jdbc_df = spark.read.format("com.microsoft.sqlserver.jdbc.SQLServerDriver")\
              .option("url", url) \
              .option("dbtable", db_table) \
              .option("accessToken", access_token) \
              .option("encrypt", "true") \
              .option("databaseName", database_name) \
              .option("hostNameInCertificate", "*.database.windows.net") \
              .load()