From c3c2bb6f462a055438a9242dfb33364b8320aacd Mon Sep 17 00:00:00 2001 From: Takumi Yanagawa Date: Wed, 6 Dec 2023 15:51:11 +0900 Subject: [PATCH] Add images for example use case Signed-off-by: Takumi Yanagawa --- docs/ocm/README.md | 162 ++++++++++-------- .../images/manual-end-to-end-use-case.drawio | 76 ++++++++ .../ocm/images/manual-end-to-end-use-case.png | Bin 0 -> 47252 bytes 3 files changed, 169 insertions(+), 69 deletions(-) create mode 100644 docs/ocm/images/manual-end-to-end-use-case.drawio create mode 100644 docs/ocm/images/manual-end-to-end-use-case.png diff --git a/docs/ocm/README.md b/docs/ocm/README.md index a3259a6..e30501a 100644 --- a/docs/ocm/README.md +++ b/docs/ocm/README.md @@ -27,6 +27,19 @@ Use "c2pcli ocm [command] --help" for more information about a command. ### Manual end-to-end use case +#### Outline +1. Create OSCAL Component Definition + - Use example one. In real cases, a user writes OSCAL by Authoring tool like [Trestle](https://ibm.github.io/compliance-trestle/)) +1. Run oscal2policy to generate OCM Policies from OSCAL +1. Deploy generated OCM Policies to OCM Hub +1. Get OCM Policies from OCM Hub +1. Run result2oscal to generate OSCAL Assessment Results from the OCM Policy Results +1. Prettify OSCAL Assessment Results + - Use C2P tools. In real cases, it's responsible of GRC tools. + +![manual-end-to-end-use-case.png](/docs/ocm/images/manual-end-to-end-use-case.png) + +#### Steps 1. Prerequisites 1. OCM is configured to manage two k8s clusters (cluster1 and cluster2) and installed Policy Governance Framework. 1. Namespace `c2p` is created in OCM Hub @@ -48,12 +61,12 @@ Use "c2pcli ocm [command] --help" for more information about a command. └── 2 ManagedClusters selected └── [cluster1 cluster2] ``` -1. Run oscal2policy +1. Run oscal2policy to generate OCM Policies from OSCAL ``` c2pcli ocm oscal2policy -c ./docs/ocm/c2p-config.yaml -o /tmp/ocm-policies ``` - The generated ocm-policies directory looks like [./final-outputs/ocm-policies](./final-outputs/ocm-policies) -1. Deploy generated OCM Policies to OCM Hub +1. Deploy the generated OCM Policies to OCM Hub ``` kubectl create -f /tmp/ocm-policies ``` @@ -76,12 +89,12 @@ Use "c2pcli ocm [command] --help" for more information about a command. ``` 1. Get OCM Policy Results (Policy, PolicySet, PlacementDecision) from OCM Hub ``` - mkdir /tmp/results + mkdir -p /tmp/results kubectl get policies.policy.open-cluster-management.io -A -o yaml > /tmp/results/policies.policy.open-cluster-management.io.yaml kubectl get policysets.policy.open-cluster-management.io -A -o yaml > /tmp/results/policysets.policy.open-cluster-management.io.yaml kubectl get placementdecisions.cluster.open-cluster-management.io -A -o yaml > /tmp/results/placementdecisions.cluster.open-cluster-management.io.yaml ``` -1. Run result2oscal +1. Run result2oscal to generate OSCAL Assessment Results from the OCM Policy Results ``` c2pcli ocm result2oscal -c ./docs/ocm/c2p-config.yaml --results /tmp/results -o /tmp/assessment-results.json ``` @@ -91,71 +104,15 @@ Use "c2pcli ocm [command] --help" for more information about a command. ``` - You can view the compliance posture like [./final-outputs/compliance-posture.md](./final-outputs/compliance-posture.md) -### C2P Decomposer -Decompose OCM poicy collection to kubernetes resources composing each OCM policy (we call it policy resource). +### GitOps automation use case -1. Clone [Policy Collection](https://github.com/open-cluster-management-io/policy-collection) - ``` - git clone --depth 1 https://github.com/open-cluster-management-io/policy-collection.git /tmp/policy-collection - ``` -1. Run C2P Decomposer - ``` - go run ./cmd/decompose/decompose.go --policy-collection-dir=/tmp/policy-collection --out=/tmp/c2p-output - ``` -1. Decomposed policy resources are ouput in `/tmp/c2p-output/decomposed/resources` - ``` - $ tree -L 1 /tmp/c2p-output/decomposed - /tmp/c2p-output/decomposed - ├── _sources - └── resources - ``` - Individual decomposed resource contains k8s manifests and configuration files (policy-generator.yaml and kustomization.yaml) for PolicyGenerator. - ``` - $ tree -L 3 /tmp/c2p-output/decomposed/resources - /tmp/c2p-output/decomposed/resources - ├── add-chrony - │   ├── add-chrony-worker - │   │   └── MachineConfig.50-worker-chrony.0.yaml - │   ├── kustomization.yaml - │   └── policy-generator.yaml - ├── add-tvk-license - │   ├── add-tvk-license - │   │   └── License.triliovault-license.0.yaml - │   ├── kustomization.yaml - ``` -### C2P Composer -Compose OCM Policy from policy resources from compliance information (for example, [compliance.yaml](cmd/compose/compliance.yaml)) +#### Outline -1. Run C2P Composer - ``` - go run cmd/compose-by-c2pcr/main.go --c2pcr ./cmd/compose-by-c2pcr/c2pcr.yaml --out /tmp/c2p-output - ``` -1. Composed OCM policies are output in `/tmp/c2p-output` - ``` - $ tree /tmp/c2p-output - /tmp/c2p-output - ├── add-chrony - │ ├── add-chrony-worker - │ │ └── MachineConfig.50-worker-chrony.0.yaml - │ ├── kustomization.yaml - │ └── policy-generator.yaml - ├── install-odf-lvm-operator - │ ├── kustomization.yaml - │ ├── odf-lvmcluster - │ │ └── LVMCluster.odf-lvmcluster.0.yaml - │ ├── policy-generator.yaml - │ └── policy-odf-lvm-operator - │ ├── Namespace.openshift-storage.0.yaml - │ ├── OperatorGroup.openshift-storage-operatorgroup.0.yaml - │ └── Subscription.lvm-operator.0.yaml - ├── kustomization.yaml - ├── policy-generator.yaml - └── policy-sets.yaml - ``` +https://github.com/IBM/compliance-to-policy/assets/113283236/da3518d0-53de-4bd6-8703-04ce94e9dfba -### GitOps automation use case +#### Steps -https://github.com/IBM/compliance-to-policy/assets/113283236/da3518d0-53de-4bd6-8703-04ce94e9dfba +Setup Github Repos 1. Create two repositories (one is configuration repository that's used for pipeline from OSCAL to Policy and another is evidence repository that's used for pipeline from OCM statuses to Compliance result) - For example, c2p-for-ocm-pipeline01-config and c2p-for-ocm-pipeline01-evidence @@ -183,17 +140,20 @@ https://github.com/IBM/compliance-to-policy/assets/113283236/da3518d0-53de-4bd6- - Name: PAT - Secret: Created Github Personal Access Token -### Run oscal-to-pocliy +Run oscal-to-pocliy + 1. Go to the configuration repository 1. Go to `Actions` tab 1. Run `OSCAL to Policy` 1. This action generates manifests from OSCAL and then generate a PR of changes for a directory `ocm-policy-manifests` containing the generated manifests. 1. Merge the PR -### Integrate with GitOps +Integrate with GitOps + 1. Sync `ocm-policy-manifests` directory with your OCM Hub by OCM GitOps (OCM Channel and Subscription addon) -### Deploy collector to your OCM Hub +Deploy collector to your OCM Hub + 1. Apply RBAC for collector ``` kubectl apply -f https://raw.githubusercontent.com/yana1205/compliance-to-policy/redesign.0622/scripts/collect/rbac.yaml @@ -211,13 +171,77 @@ https://github.com/IBM/compliance-to-policy/assets/113283236/da3518d0-53de-4bd6- kubectl apply -f https://raw.githubusercontent.com/IBM/compliance-to-policy/main/scripts/collect/cronjob.yaml ``` -### Cleanup +Cleanup + ``` kubectl delete -f https://raw.githubusercontent.com/IBM/compliance-to-policy/main/scripts/collect/cronjob.yaml kubectl -n c2p delete secret collect-ocm-status-secret kubectl delete -f https://raw.githubusercontent.com/IBM/compliance-to-policy/main/scripts/collect/rbac.yaml ``` + +### C2P Decomposer +Decompose OCM poicy collection to kubernetes resources composing each OCM policy (we call it policy resource). + +1. Clone [Policy Collection](https://github.com/open-cluster-management-io/policy-collection) + ``` + git clone --depth 1 https://github.com/open-cluster-management-io/policy-collection.git /tmp/policy-collection + ``` +1. Run C2P Decomposer + ``` + go run ./cmd/decompose/decompose.go --policy-collection-dir=/tmp/policy-collection --out=/tmp/c2p-output + ``` +1. Decomposed policy resources are ouput in `/tmp/c2p-output/decomposed/resources` + ``` + $ tree -L 1 /tmp/c2p-output/decomposed + /tmp/c2p-output/decomposed + ├── _sources + └── resources + ``` + Individual decomposed resource contains k8s manifests and configuration files (policy-generator.yaml and kustomization.yaml) for PolicyGenerator. + ``` + $ tree -L 3 /tmp/c2p-output/decomposed/resources + /tmp/c2p-output/decomposed/resources + ├── add-chrony + │   ├── add-chrony-worker + │   │   └── MachineConfig.50-worker-chrony.0.yaml + │   ├── kustomization.yaml + │   └── policy-generator.yaml + ├── add-tvk-license + │   ├── add-tvk-license + │   │   └── License.triliovault-license.0.yaml + │   ├── kustomization.yaml + ``` +### C2P Composer +Compose OCM Policy from policy resources from compliance information (for example, [compliance.yaml](cmd/compose/compliance.yaml)) + +1. Run C2P Composer + ``` + go run cmd/compose-by-c2pcr/main.go --c2pcr ./cmd/compose-by-c2pcr/c2pcr.yaml --out /tmp/c2p-output + ``` +1. Composed OCM policies are output in `/tmp/c2p-output` + ``` + $ tree /tmp/c2p-output + /tmp/c2p-output + ├── add-chrony + │ ├── add-chrony-worker + │ │ └── MachineConfig.50-worker-chrony.0.yaml + │ ├── kustomization.yaml + │ └── policy-generator.yaml + ├── install-odf-lvm-operator + │ ├── kustomization.yaml + │ ├── odf-lvmcluster + │ │ └── LVMCluster.odf-lvmcluster.0.yaml + │ ├── policy-generator.yaml + │ └── policy-odf-lvm-operator + │ ├── Namespace.openshift-storage.0.yaml + │ ├── OperatorGroup.openshift-storage-operatorgroup.0.yaml + │ └── Subscription.lvm-operator.0.yaml + ├── kustomization.yaml + ├── policy-generator.yaml + └── policy-sets.yaml + ``` + ## C2P as controller (deprecated) 1. Build image ``` diff --git a/docs/ocm/images/manual-end-to-end-use-case.drawio b/docs/ocm/images/manual-end-to-end-use-case.drawio new file mode 100644 index 0000000..19a1dcf --- /dev/null +++ b/docs/ocm/images/manual-end-to-end-use-case.drawio @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/ocm/images/manual-end-to-end-use-case.png b/docs/ocm/images/manual-end-to-end-use-case.png new file mode 100644 index 0000000000000000000000000000000000000000..8b968d27852191182160f8b4a4de697000f0e4c2 GIT binary patch literal 47252 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 YqP1DNs`2TmpSOUAX5(aCwx1sNKkuf$PXGV_ literal 0 HcmV?d00001