使用azure身份凭据访问blob存储

blmhpbnm  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(396)

我尝试使用azurerbac来保护对存储blob的访问,并使用azureidentity从apachespark访问这些blob。我看到最近版本的hadoop azure支持abfs,并且它支持一些令牌提供者:https://hadoop.apache.org/docs/current/hadoop-azure/abfs.html#azure_managed_identity . 对于生产使用,我可以将服务主体与ad应用程序以及关联的客户端id、机密和端点一起使用。或者我甚至可以使用托管身份。
在本地开发时,最好能使用devicecodecredential或interactivebrowsercredential之类的工具,即使用浏览器登录到azure,并使用返回的凭据获取访问令牌并将其传递给spark。我希望这样做的原因是让用户在访问数据时使用自己的凭据,而不是让存储密钥/sas令牌/etc到处乱飞。
这样的事情可能吗?我可以实现一个定制的令牌提供程序来 Package 一个azure身份示例,但是我想知道是否有一个不那么核心的方法。

nnvyjq4y

nnvyjq4y1#

如果要使用用户凭据进行身份验证,则支持的身份验证方式中最接近的方式是 OAuth 2.0: Username and Password ,但本质上它使用azure ad ropc流进行身份验证,它有一些限制,例如,它不会与启用mfa的用户帐户一起工作。
实际上,对于本地开发,我最想推荐的方法是使用服务主体进行身份验证。 OAuth 2.0 Client Credentials ,因为msi(托管标识)本质上是由azure管理的服务主体,如果您将msi用于生产,环境的转换将更加平滑,azure中的权限内容将在某些情况下(在这种情况下可能不是这样)用户帐户和服务主体之间存在一些差异。当然,自定义令牌提供者也是一种可行的方法,它们都取决于您自己。

相关问题