【问题标题】:Get specific user permissions on Azure Data Lake Gen2 (ACL)获取 Azure Data Lake Gen2 (ACL) 的特定用户权限
【发布时间】:2023-04-02 13:10:01
【问题描述】:

我正在使用 Azure Functions,我想知道如何查看用户对某个目录或文件的权限。

要获取 ACL 的信息,我正在关注下一个文档:https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-python(对于 conexion,我使用了 Connect by using an account key 选项)

我能够得到下一个信息:

{
    'accept_ranges': None,
    'cache_control': None,
    'content_disposition': None,
    'content_encoding': None,
    'content_language': None,
    'content_length': None,
    'content_range': None,
    'content_type': None,
    'content_md5': None,
    'date': datetime.datetime(XXXXX),
    'etag': '"4545454545"',
    'last_modified': datetime.datetime(XXXXX),
    'request_id': 'XXXXX',
    'version': '2019-02-02',
    'resource_type': None,
    'properties': None,
    'owner': '123',
    'group': '123',
    'permissions': 'rwxr-x---',
    'acl': 'user: : rwx,
    group: : r-x,
    other: : ---',
    'lease_duration': None,
    'lease_state': None,
    'lease_status': None,
    'error_code': None
}

这会返回通用信息,但我想知道如何获取特定用户的权限信息。我知道如何获取用户 ID 或用户组 ID,但不知道如何与 ACL 关联。

也许我需要使用 API?

先谢谢了!

【问题讨论】:

    标签: azure azure-functions azure-data-lake


    【解决方案1】:

    根据您的结果,您没有授予用户权限。

    因此,您需要按照此屏幕截图授予权限。

    然后你可以使用代码来获取它的 ACL。

    acl_props = directory_client.get_access_control()
    
    print(acl_props['acl'])
    

    应该是这样的:

    user::rwx,
    user:256xxxx6-019b-479c-a71f-d5axxxx93143:r-x,
    group::r-x,
    mask::r-x,
    other::---
    

    我们可以发现第二行是用户 allenwu1 的 ACL。

    然后你可以使用str.index('user:{user id}:') 来获取它的位置。然后就可以得到接下来的三个字符,也就是用户的ACL。

    【讨论】:

    • 感谢艾伦的回复!我现在的疑问是,如果我签入该目录中的文件夹,我如何知道该用户是否具有权限?如果我做同样的过程,我不应该得到那个许可。有没有办法做到这一点?干杯
    • @jmarco10 只需使用str.index('user:{user id}:')。这里的user id 是你想知道它是否有权限的用户ID。如果它没有此目录的权限,str.index('user:{user id}:') 将返回-1
    • 不确定我们是否在同一页面上...例如:我在文件夹 A 中为用户设置了权限,在文件夹 A 中,我们有文件夹 B 和 C。如果我们得到文件夹 B 或 C 的 ACL,我没有取回任何用户,但它应该具有权限,因为用户对父文件夹具有权限。我的解释正确吗?
    • @jmarco10 很抱歉造成误解。您需要在父文件夹上选择默认 ACL。之后,如果您在其中创建子文件夹,则用户将拥有该子文件夹的权限。此设置不会影响现有的子文件夹。见docs.microsoft.com/en-us/azure/storage/blobs/…。您可以像这样选择默认 ACL:i.stack.imgur.com/I76Xc.png
    • 非常感谢艾伦,解释得很好:)
    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 2020-08-09
    • 2020-09-22
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2021-03-06
    • 2019-09-10
    相关资源
    最近更新 更多