-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify Azure storage permissions #763
Changes from all commits
574939e
e8d68db
7c29c23
11f2e3c
44e5ba5
0fefeca
ec8ddbd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -478,7 +478,7 @@ CAUTION: Do not set an object storage property to an empty string `""` or to `nu | |
|
||
==== Microsoft ABS/ADLS | ||
|
||
You can configure access to Azure Blob Storage with either shared keys or Azure's managed identities system to securely interact with Azure Blob Storage. Shared keys, as static credentials, are simple to use but require manual management and vigilant security practices to prevent breaches due to their unchanging nature. In contrast, managed identities provide a more secure and maintenance-free solution by automating credential management and rotation, though they are exclusive to the Azure ecosystem. | ||
You can configure access to Azure Blob Storage with either account access keys or Azure's managed identities system to securely interact with Azure Blob Storage. Account access keys, as static credentials, require manual management and vigilant security practices to prevent breaches due to their unchanging nature. In contrast, managed identities provide a more secure and maintenance-free solution by automating credential management and rotation, though they are exclusive to the Azure ecosystem. | ||
|
||
include::manage:partial$azure-blob-limitations.adoc[] | ||
|
||
|
@@ -582,7 +582,7 @@ NOTE: The `serviceAccount` annotations and the `statefulset` Pod labels are esse | |
|
||
CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. | ||
|
||
To configure access to ABS/ADLS with shared keys: | ||
To configure access to ABS/ADLS with account access keys: | ||
|
||
. Get an account access key for the Azure container that Redpanda will run on. For information on how to view your account access keys, see the https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal#view-account-access-keys[Azure documentation^]. | ||
. Override the following required cluster properties in the Helm chart: | ||
|
@@ -695,7 +695,7 @@ CAUTION: Do not set an object storage property to an empty string `""` or to `nu | |
|
||
- For information about how to grant access from an internet IP range (if you need to open additional routes/ports between your broker nodes and Azure Blob Storage; for example, in a hybrid cloud deployment), see the https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal#grant-access-from-an-internet-ip-range[Microsoft documentation^]. | ||
|
||
- For more information about shared key authentication, see the https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key[Microsoft documentation^]. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have gotten some feedback that "Shared Key" might be more of an implementation detail and is not all that helpful for our end users. Is it better to remove this entirely? I'm not sure that "account access key" and "shared key" are interchangeable in the context of ABS. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Microsoft docs seem to use "access key" as the term for the generated tokens allowing users access to ABS, while "Shared Key" authorization is the process by which they are used- at least, that's how I'm interpreting the docs. I think the changes you have made here (using Shared Key authenication to refer to the process and account access keys as the term for the keys themselves) are in line with their messaging. |
||
- For more information about Shared Key authentication, see the https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key[Microsoft documentation^]. | ||
|
||
endif::[] | ||
|
||
|
@@ -801,7 +801,17 @@ include::manage:partial$azure-blob-limitations.adoc[] | |
|
||
To configure access to an Azure container with a managed identity: | ||
|
||
. Configure an xref:manage:security/iam-roles.adoc#configuring-iam-roles[Azure managed identity]. | ||
. Configure an xref:manage:security/iam-roles.adoc#azure-prerequisites[Azure managed identity]. | ||
+ | ||
Note the minimum set of permissions required for Tiered Storage: | ||
+ | ||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete | ||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read | ||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write | ||
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action | ||
- Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write | ||
- Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action | ||
|
||
. Run the `rpk cluster config edit` command, then edit the following required properties: | ||
+ | ||
[,properties] | ||
|
@@ -815,7 +825,7 @@ cloud_storage_azure_container: <container-name> | |
+ | ||
Replace `<placeholders>` with your own values. | ||
|
||
To configure access to Azure Blob Storage with shared keys: | ||
To configure access to Azure Blob Storage with account access keys: | ||
|
||
. Copy an account access key for the Azure container you want Redpanda to use and enter it in the `cloud_storage_azure_shared_key` property. For information on how to view your account access keys, see the https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal#view-account-access-keys[Azure documentation^]. | ||
. Run the `rpk cluster config edit` command, then edit the following required properties: | ||
|
@@ -832,7 +842,7 @@ Replace `<placeholders>` with your own values. | |
+ | ||
For information about how to grant access from an internet IP range (if you need to open additional routes/ports between your broker nodes and ABS/ADLS; for example, in a hybrid cloud deployment), see the https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal#grant-access-from-an-internet-ip-range[Microsoft documentation^]. | ||
+ | ||
For information about shared key authentication, see the https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key[Microsoft documentation^]. | ||
For information about Shared Key authentication, see the https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key[Microsoft documentation^]. | ||
+ | ||
CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. To reset a property to its default value, run `rpk cluster config force-reset <config-name>` or remove that line from the cluster configuration with `rpk cluster config edit`. | ||
|
||
|
@@ -1717,7 +1727,7 @@ Required for ABS/ADLS. | |
Required for ABS/ADLS. | ||
|
||
| config_ref:cloud_storage_azure_shared_key,true,properties/object-storage-properties[] | ||
| Azure shared key. | ||
| Azure storage account access key. | ||
|
||
Required for ABS/ADLS. | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to verify: as far as I can tell, Azure account access keys grant full access to storage account data.
If so, then these instructions we provide for AWS S3 shared keys don't have an equivalent for Azure, correct?
Meaning there is no way to modify permissions if using account access keys, and if they want to go by "least privilege," they must use managed identities instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SMEs--please provide this guidance ( @deniscoady @andijcr or @WillemKauf ) Thx.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. yes, the granular permissions are only for azure managed identities