You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Random writes | Operations that include both READ and WRITE flags. For example: [SSH.NET create API](https://github.com/sshnet/SSH.NET/blob/develop/src/Renci.SshNet/SftpClient.cs#:~:text=public%20SftpFileStream-,Create,-(string%20path))|
51
50
| Links |<li>`symlink` - creating symbolic links<li>`ln` - creating hard links<li>Reading links not supported |
52
51
| Capacity Information |`df` - usage info for filesystem |
@@ -62,8 +61,6 @@ To transfer files to or from Azure Blob Storage via SFTP clients, see the follow
62
61
63
62
- Microsoft Entra ID isn't supported for the SFTP endpoint.
64
63
65
-
- POSIX-like access control lists (ACLs) aren't supported for the SFTP endpoint.
66
-
67
64
To learn more, see [SFTP permission model](secure-file-transfer-protocol-support.md#sftp-permission-model) and see [Access control model in Azure Data Lake Storage Gen2](data-lake-storage-access-control-model.md).
Copy file name to clipboardExpand all lines: articles/storage/blobs/secure-file-transfer-protocol-support.md
+25-3Lines changed: 25 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,9 +50,9 @@ Local users must use either a password or a Secure Shell (SSH) private key crede
50
50
To set up access permissions, you'll create a local user, and choose authentication methods. Then, for each container in your account, you can specify the level of access you want to give that user.
51
51
52
52
> [!CAUTION]
53
-
> Local users do not interoperate with other Azure Storage permission models such as RBAC (role based access control), ABAC (attribute based access control), and ACLs (access control lists).
53
+
> Local users do not interoperate with other Azure Storage permission models such as RBAC (role based access control) and ABAC (attribute based access control). ACLs (access control lists) are supported for local users at the preview level.
54
54
>
55
-
> For example, Jeff has read only permission (can be controlled via RBAC, ABAC, or ACLs) via their Microsoft Entra identity for file _foo.txt_ stored in container _con1_. If Jeff is accessing the storage account via NFS (when not mounted as root/superuser), Blob REST, or Data Lake Storage Gen2 REST, these permissions will be enforced. However, if Jeff also has a local user identity with delete permission for data in container _con1_, they can delete _foo.txt_ via SFTP using the local user identity.
55
+
> For example, Jeff has read only permission (can be controlled via RBACor ABAC) via their Microsoft Entra identity for file _foo.txt_ stored in container _con1_. If Jeff is accessing the storage account via NFS (when not mounted as root/superuser), Blob REST, or Data Lake Storage Gen2 REST, these permissions will be enforced. However, if Jeff also has a local user identity with delete permission for data in container _con1_, they can delete _foo.txt_ via SFTP using the local user identity.
56
56
57
57
For SFTP enabled storage accounts, you can use the full breadth of Azure Blob Storage security settings, to authenticate and authorize users accessing Blob Storage via Azure portal, Azure CLI, Azure PowerShell commands, AzCopy, as well as Azure SDKs, and Azure REST APIs. To learn more, see [Access control model in Azure Data Lake Storage Gen2](data-lake-storage-access-control-model.md).
58
58
@@ -72,7 +72,7 @@ If you choose to authenticate with private-public key pair, you can either gener
72
72
73
73
## Container permissions
74
74
75
-
In the current release, you can specify only container-level permissions. Directory-level permissions aren't supported. You can choose which containers you want to grant access to and what level of access you want to provide (Read, Write, List, Delete, and Create). Those permissions apply to all directories and subdirectories in the container. You can grant each local user access to as many as 100 containers. Container permissions can also be updated after creating a local user. The following table describes each permission in more detail.
75
+
For container-level permissions, you can choose which containers you want to grant access to and what level of access you want to provide (Read, Write, List, Delete, Create, Modify Ownership, and Modify Permissions). Those permissions apply to all directories and subdirectories in the container. You can grant each local user access to as many as 100 containers. Container permissions can also be updated after creating a local user. The following table describes each permission in more detail.
76
76
77
77
| Permission | Symbol | Description |
78
78
|---|---|---|
@@ -81,9 +81,31 @@ In the current release, you can specify only container-level permissions. Direct
81
81
| List | l | <li>List content within container</li><li>List content within directory</li> |
82
82
| Delete | d | <li>Delete file/directory</li> |
83
83
| Create | c | <li>Upload file if file doesn't exist</li><li>Create directory if directory doesn't exist</li> |
84
+
| Modify Ownership | o | <li>Change owner or group for file/directory</li> |
85
+
| Modify Permissions | p | <li>Change permissions for file/directory</li> |
84
86
85
87
When performing write operations on blobs in sub directories, Read permission is required to open the directory and access blob properties.
86
88
89
+
## ACLs
90
+
91
+
For directory or blob level permissions, you can change owner, group, and mode that are used by ADLS Gen2 ACLs. Most SFTP clients expose commands for changing these properties. The following table describes common commands in more detail.
| chown | o | <li>Change owner for file/directory</li><li>Must specify numeric ID</li> |
96
+
| chgrp | o | <li>Change group for file/directory</li><li>Must specify numeric ID</li> |
97
+
| chmod | p | <li>Change permissions/mode for file/directory</li><li>Must specify POSIX style octal permissions</li> |
98
+
99
+
The IDs required for changing owner and group are part of new properties for Local Users. The following table describes each new Local User property in more detail.
100
+
101
+
| Property | Description |
102
+
|---|---|
103
+
| UserId | <li>Unique identifier for the Local User within the storage account</li><li>Generated by default when the Local User is created</li><li>Used for setting owner on file/directory</li> |
104
+
| GroupId | <li>Identifer for a group of Local Users</li> |
105
+
| AllowAclAuthorization | <li>Allow authorizing this Local User's requests with ACLs</li> |
106
+
107
+
Once the desired ACLs have been configured and the Local User enables `AllowAclAuthorization`, they may use ACLs to authorize their requests. Similar to RBAC, container permissions can interoperate with ACLs. Only if the local user doesn't have sufficient container permissions will ACLs be evaluated. To learn more, see [Access control model in Azure Data Lake Storage Gen2](data-lake-storage-access-control-model.md).
108
+
87
109
## Home directory
88
110
89
111
As you configure permissions, you have the option of setting a home directory for the local user. If no other container is specified in an SFTP connection request, then the home directory is the directory that the user connects to by default. For example, consider the following request made by using [Open SSH](/windows-server/administration/openssh/openssh_overview). This request doesn't specify a container or directory name as part of the `sftp` command.
0 commit comments