Skip to content

Commit

Permalink
Revert "CSM 1.11 Rebase (#1180)" (#1183)
Browse files Browse the repository at this point in the history
  • Loading branch information
rishabhatdell authored Jul 17, 2024
1 parent b423e75 commit 5231e2d
Show file tree
Hide file tree
Showing 119 changed files with 1,087 additions and 2,086 deletions.
3 changes: 2 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# Bharath Sreekanth (bharathsreekanth)
# Deepak Ghivari (Deepak-Ghivari)
# Sean Gallacher (gallacher)
# Marek Suski (mareksuski-dell)
# Małgorzata Dutka (mdutka-dell)
# Matt Schmaelzle (mjsdell)
# Mukesh Gandharva (mgandharva)
Expand All @@ -22,4 +23,4 @@
# Shayna Finocchiaro (shaynafinocchiaro)
# Shefali Malhotra (shefali-malhotra)

* @atye @bharathsreekanth @Deepak-Ghivari @gallacher @mdutka-dell @mgandharva @mjsdell @prablr79 @rajendraindukuri @rajkumar-palani @rsedlock1958 @shanmydell @sharont58 @shaynafinocchiaro @shefali-malhotra
* @atye @bharathsreekanth @Deepak-Ghivari @gallacher @mareksuski-dell @mdutka-dell @mgandharva @mjsdell @prablr79 @rajendraindukuri @rajkumar-palani @rsedlock1958 @shanmydell @sharont58 @shaynafinocchiaro @shefali-malhotra
8 changes: 4 additions & 4 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -172,19 +172,19 @@ enable = false
# icon = "fa fa-envelope"
# desc = "Discuss development issues around the project"
[[params.versions]]
version = "Current(v1.11.0)"
version = "Current(v1.10.2)"
url = "https://dell.github.io/csm-docs/docs/"

[[params.versions]]
version = "v1.10.2"
version = "v1.9.4"
url = "https://dell.github.io/csm-docs/v1"

[[params.versions]]
version = "v1.9.4"
version = "v1.8.0"
url = "https://dell.github.io/csm-docs/v2"

[[params.versions]]
version = "v1.8.0"
version = "v1.7.1"
url = "https://dell.github.io/csm-docs/v3"

[[menu.main]]
Expand Down
2 changes: 1 addition & 1 deletion content/docs/applicationmobility/release/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Description: >
Release Notes
---

## Release Notes - CSM Application Mobility v1.0.4
## Release Notes - CSM Application Mobility v1.0.2

### New Features/Changes

Expand Down
55 changes: 53 additions & 2 deletions content/docs/authorization/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,63 @@ Description: >
Dell Technologies (Dell) Container Storage Modules (CSM) for Authorization
---

[Container Storage Modules](https://github.com/dell/csm) (CSM) for Authorization is part of the open-source suite of Kubernetes storage enablers for Dell products.
[Container Storage Modules](https://github.com/dell/csm) (CSM) for Authorization is part of the open-source suite of Kubernetes storage enablers for Dell products.

CSM for Authorization provides storage and Kubernetes administrators the ability to apply RBAC for Dell CSI Drivers. It does this by deploying a proxy between the CSI driver and the storage system to enforce role-based access and usage rules.

Storage administrators of compatible storage platforms will be able to apply quota and RBAC rules that instantly and automatically restrict cluster tenants usage of storage resources. Users of storage through CSM for Authorization do not need to have storage admin root credentials to access the storage system.

Kubernetes administrators will have an interface to create, delete, and manage roles/groups that storage rules may be applied. Administrators and/or users may then generate authentication tokens that may be used by tenants to use storage with proper access policies being automatically enforced.

Currently, we have two versions of Authorization, **v1.x GA** and **v2.0 Tech Preview**.
The following diagram shows a high-level overview of CSM for Authorization with a `tenant-app` that is using a CSI driver to perform storage operations through the CSM for Authorization `proxy-server` to access the a Dell storage system. All requests from the CSI driver will contain the token for the given tenant that was granted by the Storage Administrator.

![CSM for Authorization](./karavi-authorization-example.png "CSM for Authorization")

## CSM for Authorization Capabilities
{{<table "table table-striped table-bordered table-sm">}}
| Feature | PowerFlex | PowerMax | PowerScale | Unity XT | PowerStore |
| - | - | - | - | - | - |
| Ability to set storage quota limits to ensure k8s tenants are not overconsuming storage | Yes | Yes | No (natively supported) | No | No |
| Ability to create access control policies to ensure k8s tenant clusters are not accessing storage that does not belong to them | Yes | Yes | No (natively supported) | No | No |
| Ability to shield storage credentials from Kubernetes administrators ensuring credentials are only handled by storage admins | Yes | Yes | Yes | No | No |
{{</table>}}

**NOTE:** PowerScale OneFS implements its own form of Role-Based Access Control (RBAC). CSM for Authorization does not enforce any role-based restrictions for PowerScale. To configure RBAC for PowerScale, refer to the PowerScale OneFS [documentation](https://www.dell.com/support/home/en-us/product-support/product/isilon-onefs/docs).

## Authorization Components Support Matrix
CSM for Authorization consists of 2 components - The authorization sidecar, bundled with the driver, communicates with the Authorization proxy server to validate access to Storage platforms. The authorization sidecar is backward compatible with older Authorization proxy server versions. However, it is highly recommended to have the Authorization proxy server and sidecar installed from the same release of CSM.

**NOTE:** If the deployed CSI driver has a number of controller pods equal to the number of schedulable nodes in your cluster, CSM for Authorization may not be able to inject properly into the driver's controller pod.
To resolve this, please refer to our [troubleshooting guide](./troubleshooting) on the topic.

## Roles and Responsibilities

The CSM for Authorization CLI can be executed in the context of the following roles:
- Storage Administrators
- Kubernetes Tenant Administrators

### Storage Administrators

Storage Administrators can perform the following operations within CSM for Authorization

- Tenant Management (create, get, list, delete, bind roles, unbind roles)
- Token Management (generate, revoke)
- Storage System Management (create, get, list, update, delete)
- Storage Access Roles Management (assign to a storage system with an optional quota)

### Tenant Administrators

Tenants of CSM for Authorization can use the token provided by the Storage Administrators in their storage requests.

### Workflow

1) Tenant Admin requests storage from a Storage Admin.
2) Storage Admin uses CSM Authorization CLI to:<br>
a) Create a tenant resource.<br>
b) Create a role permitting desired storage access.<br>
c) Assign the role to the tenant and generate a token.<br>
3) Storage Admin returns a token to the Tenant Admin.
4) Tenant Admin inputs the Token into their Kubernetes cluster as a Secret.
5) Tenant Admin updates CSI driver with CSM Authorization sidecar module.

![CSM for Authorization Workflow](./design2.png "CSM for Authorization Workflow")
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization

**Helm**

Refer to the [Install the Driver](../../../../deployment/helm/drivers/installation/powerflex/#install-the-driver) section to edit the parameters in `samples/config.yaml` to configure the driver to communicate with the CSM Authorization sidecar.
Refer to the [Install the Driver](../../../deployment/helm/drivers/installation/powerflex/#install-the-driver) section to edit the parameters in `samples/config.yaml` to configure the driver to communicate with the CSM Authorization sidecar.

- Update `endpoint` to match the localhost endpoint in `samples/secret/karavi-authorization-config.json`.

Expand All @@ -78,7 +78,7 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization

**Operator**

Refer to the [Create Secret](../../../../deployment/csmoperator/drivers/powerflex/#create-secret) section to prepare `secret.yaml` to configure the driver to communicate with the CSM Authorization sidecar.
Refer to the [Create Secret](../../../deployment/csmoperator/drivers/powerflex/#create-secret) section to prepare `secret.yaml` to configure the driver to communicate with the CSM Authorization sidecar.

- Update `endpoint` to match the localhost endpoint in `samples/secret/karavi-authorization-config.json`.

Expand All @@ -102,7 +102,7 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization

**Helm**

Refer to the [Install the Driver](../../../../deployment/helm/drivers/installation/powerflex/#install-the-driver) section to edit the parameters in `myvalues.yaml` to enable CSM Authorization.
Refer to the [Install the Driver](../../../deployment/helm/drivers/installation/powerflex/#install-the-driver) section to edit the parameters in `myvalues.yaml` to enable CSM Authorization.

- Update `authorization.enabled` to `true`.

Expand All @@ -119,8 +119,8 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization
enabled: true
# sidecarProxyImage: the container image used for the csm-authorization-sidecar.
# Default value: dellemc/csm-authorization-sidecar:v1.11.0
sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.11.0
# Default value: dellemc/csm-authorization-sidecar:v1.10.0
sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.10.0
# proxyHost: hostname of the csm-authorization server
# Default value: None
Expand All @@ -136,7 +136,7 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization

**Operator**

Refer to the [Install Driver](../../../../deployment/csmoperator/drivers/powerflex/#install-driver) section to edit the parameters in the Custom Resource to enable CSM Authorization.
Refer to the [Install Driver](../../../deployment/csmoperator/drivers/powerflex/#install-driver) section to edit the parameters in the Custom Resource to enable CSM Authorization.

Under `modules`, enable the module named `authorization`:

Expand All @@ -156,10 +156,10 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization
- name: authorization
# enable: Enable/Disable csm-authorization
enabled: true
configVersion: v1.11.0
configVersion: v1.10.0
components:
- name: karavi-authorization-proxy
image: dellemc/csm-authorization-sidecar:v1.11.0
image: dellemc/csm-authorization-sidecar:v1.10.0
envs:
# proxyHost: hostname of the csm-authorization server
- name: "PROXY_HOST"
Expand All @@ -172,4 +172,4 @@ Given a setup where Kubernetes, a storage system, and the CSM for Authorization

6. Install the Dell CSI PowerFlex driver following the appropriate documenation for your installation method.

7. (Optional) Install [dellctl](../../../../support/cli/#installation-instructions) to perform Kubernetes administrator commands for additional capabilities (e.g., list volumes). Please refer to the [dellctl documentation page](../../../../support/cli) for the installation steps and command list.
7. (Optional) Install [dellctl](../../../support/cli/#installation-instructions) to perform Kubernetes administrator commands for additional capabilities (e.g., list volumes). Please refer to the [dellctl documentation page](../../../support/cli) for the installation steps and command list.
Original file line number Diff line number Diff line change
Expand Up @@ -55,17 +55,17 @@ Create the karavi-authorization-config secret using this command:

**Helm**

Refer to the [Install the Driver](../../../../deployment/helm/drivers/installation/powermax/#install-the-driver) section where you edit `samples/secret/secret.yaml` with the credentials of the PowerMax. Leave `username` and `password` with the default values as they will be ignored.
Refer to the [Install the Driver](../../../deployment/helm/drivers/installation/powermax/#install-the-driver) section where you edit `samples/secret/secret.yaml` with the credentials of the PowerMax. Leave `username` and `password` with the default values as they will be ignored.

**Operator**

Refer to the [Install the Driver](../../../../deployment/csmoperator/drivers/powermax/#install-driver) section to prepare `powermax-creds.yaml`. Leave `username` and `password` with the default values as they will be ignored.
Refer to the [Install the Driver](../../../deployment/csmoperator/drivers/powermax/#install-driver) section to prepare `powermax-creds.yaml`. Leave `username` and `password` with the default values as they will be ignored.

5. Enable CSM Authorization in the driver installation applicable to your installation method.

**Helm**

Refer to the [Install the Driver](../../../../deployment/helm/drivers/installation/powermax/#install-the-driver) section to edit the parameters in `my-powermax-settings.yaml` file to configure the driver to communicate with the CSM Authorization sidecar.
Refer to the [Install the Driver](../../../deployment/helm/drivers/installation/powermax/#install-the-driver) section to edit the parameters in `my-powermax-settings.yaml` file to configure the driver to communicate with the CSM Authorization sidecar.

- Update `global.storageArrays.endpoint` to match the localhost endpoint in `samples/secret/karavi-authorization-config.json`.

Expand All @@ -79,8 +79,6 @@ Create the karavi-authorization-config secret using this command:

- Update `authorization.skipCertificateValidation` to `true` or `false` depending on if you want to disable or enable certificate validation of the CSM Authorization Proxy Server.

- Update `csireverseproxy.deployAsSidecar` to `true`.

Example:

```yaml
Expand All @@ -91,20 +89,12 @@ Create the karavi-authorization-config secret using this command:
managementServers:
- endpoint: https://localhost:9400
csireverseproxy:
# Set enabled to true if you want to deploy csireverseproxy as sidecar
# Allowed values:
# "true" - CSI reverse proxy will be deployed as a sidecar
# "false" - CSI reverse proxy will be deployed along with driver
# Default value: "true"
deployAsSidecar: true
authorization:
enabled: true
# sidecarProxyImage: the container image used for the csm-authorization-sidecar.
# Default value: dellemc/csm-authorization-sidecar:v1.11.0
sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.11.0
# Default value: dellemc/csm-authorization-sidecar:v1.10.0
sidecarProxyImage: dellemc/csm-authorization-sidecar:v1.10.0
# proxyHost: hostname of the csm-authorization server
# Default value: None
Expand All @@ -120,7 +110,7 @@ Create the karavi-authorization-config secret using this command:

**Operator**

Refer to the [Install Driver](../../../../deployment/csmoperator/drivers/powermax/#install-driver) section to edit the parameters in the Custom Resource to enable CSM Authorization.
Refer to the [Install Driver](../../../deployment/csmoperator/drivers/powermax/#install-driver) section to edit the parameters in the Custom Resource to enable CSM Authorization.

Under `modules`, enable the module named `authorization`:

Expand All @@ -132,30 +122,18 @@ Create the karavi-authorization-config secret using this command:

- Update the `SKIP_CERTIFICATE_VALIDATION` environment value to `true` or `false` depending on if you want to disable or enable certificate validation of the CSM Authorization Proxy Server.

- Update the `DeployAsSidecar` environment variable for the `csipowermax-reverseproxy` component to `true`.

Example:

```yaml
modules:
- name: csireverseproxy
# enabled: Always set to true
enabled: true
forceRemoveModule: true
configVersion: v2.10.0
components:
- name: csipowermax-reverseproxy
envs:
- name: "DeployAsSidecar"
value: "true"
# Authorization: enable csm-authorization for RBAC
- name: authorization
# enable: Enable/Disable csm-authorization
enabled: true
configVersion: v1.11.0
configVersion: v1.10.0
components:
- name: karavi-authorization-proxy
image: dellemc/csm-authorization-sidecar:v1.11.0
image: dellemc/csm-authorization-sidecar:v1.10.0
envs:
# proxyHost: hostname of the csm-authorization server
- name: "PROXY_HOST"
Expand All @@ -168,4 +146,4 @@ Create the karavi-authorization-config secret using this command:

5. Install the Dell CSI PowerMax driver following the appropriate documenation for your installation method.

6. (Optional) Install [dellctl](../../../../support/cli/#installation-instructions) to perform Kubernetes administrator commands for additional capabilities (e.g., list volumes). Please refer to the [dellctl documentation page](../../../../support/cli) for the installation steps and command list.
6. (Optional) Install [dellctl](../../../support/cli/#installation-instructions) to perform Kubernetes administrator commands for additional capabilities (e.g., list volumes). Please refer to the [dellctl documentation page](../../../support/cli) for the installation steps and command list.
Loading

0 comments on commit 5231e2d

Please sign in to comment.