From 78ca64a234ad03242c714d85114c1b4589dba19b Mon Sep 17 00:00:00 2001 From: "Yauheni Rykhter (EPAM)" <yauheni_rykhter@epam.com> Date: Thu, 7 Sep 2023 13:48:15 +0000 Subject: [PATCH] GONRG-7679: update policy bootstrap --- .../bootstrap-osdu-module/DataPartitionBundles.py | 10 +++++++--- .../gc/bootstrap-osdu-module/bootstrap_policy.sh | 14 ++++---------- .../templates/search_template.rego | 15 +++++++++++++++ devops/gc/deploy/templates/opa-configmap.yaml | 10 ---------- devops/gc/deploy/values.yaml | 2 +- 5 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 devops/gc/bootstrap-osdu-module/templates/search_template.rego diff --git a/devops/gc/bootstrap-osdu-module/DataPartitionBundles.py b/devops/gc/bootstrap-osdu-module/DataPartitionBundles.py index 59a33da9..17a94427 100644 --- a/devops/gc/bootstrap-osdu-module/DataPartitionBundles.py +++ b/devops/gc/bootstrap-osdu-module/DataPartitionBundles.py @@ -10,8 +10,10 @@ class BootstrapDataPartitionBundles: tar_name = "bundle-{dp}.tar.gz".format(dp=dp_id) dataauthz_template_name = "dataauthz_template.rego" manifest_template_name = "manifest_template.manifest" + search_template_name = "search_template.rego" dataauthz_filename = "dataauthz.rego" manifest_filename = ".manifest" + search_filename = "search.rego" template_path = "devops/gc/bootstrap-osdu-module/templates/" env = Environment( @@ -20,19 +22,21 @@ class BootstrapDataPartitionBundles: ) dataauthz_template = env.get_template(dataauthz_template_name) manifest_template = env.get_template(manifest_template_name) + search_template = env.get_template(search_template_name) dataauthz_render = dataauthz_template.render(dp_id=dp_id) manifest_render = manifest_template.render(dp_id=dp_id) + search_render = search_template.render(dp_id=dp_id) with open(dataauthz_filename,"w") as f1: f1.write(dataauthz_render) with open(manifest_filename, "w") as f2: f2.write(manifest_render) + with open(search_filename, "w") as f2: + f2.write(search_render) with tarfile.open(tar_name, "w:gz") as tar_handle: tar_handle.add(os.path.abspath(dataauthz_filename), arcname=dataauthz_filename) tar_handle.add(os.path.abspath(manifest_filename), arcname=manifest_filename) - - - + tar_handle.add(os.path.abspath(search_filename), arcname=search_filename) # Initialize class and upload bundles if __name__ == '__main__': diff --git a/devops/gc/bootstrap-osdu-module/bootstrap_policy.sh b/devops/gc/bootstrap-osdu-module/bootstrap_policy.sh index d4453e31..d8e87f4c 100644 --- a/devops/gc/bootstrap-osdu-module/bootstrap_policy.sh +++ b/devops/gc/bootstrap-osdu-module/bootstrap_policy.sh @@ -58,18 +58,12 @@ source ./validate-env.sh "POLICY_BUCKET" create_instance_bundles ## Creating partition bundles -if [[ "${DATA_PARTITION_ID_LIST}" == "" ]]; then - # Single partition case - create_partition_bundle "$DATA_PARTITION" -else - # Multipartition case - IFS=',' read -ra PARTITIONS <<< "${DATA_PARTITION_ID_LIST}" - PARTITIONS=("${DATA_PARTITION}" "${PARTITIONS[@]}") +IFS=',' read -ra PARTITIONS <<< "${DATA_PARTITION_ID_LIST}" +PARTITIONS=("${PARTITIONS[@]}") - for PARTITION in "${PARTITIONS[@]}"; do +for PARTITION in "${PARTITIONS[@]}"; do create_partition_bundle "${PARTITION}" - done -fi +done ## Uploading bundles to gcs/minio bucket if [ "${ONPREM_ENABLED}" == "true" ] diff --git a/devops/gc/bootstrap-osdu-module/templates/search_template.rego b/devops/gc/bootstrap-osdu-module/templates/search_template.rego new file mode 100644 index 00000000..9f394427 --- /dev/null +++ b/devops/gc/bootstrap-osdu-module/templates/search_template.rego @@ -0,0 +1,15 @@ +package osdu.partition["{{dp_id}}"].search + +default allow = false + +allow = true { + input.operation == "view" + # At least one user group needs to be in acl viewers + input.record.acl.viewers[_]==input.groups[_] +} + +allow = true { + input.operation == ["view", "create", "update", "delete", "purge"][_] + # At least one user group needs to be in acl owners + input.record.acl.owners[_]==input.groups[_] +} diff --git a/devops/gc/deploy/templates/opa-configmap.yaml b/devops/gc/deploy/templates/opa-configmap.yaml index aca6be1c..335a9c78 100644 --- a/devops/gc/deploy/templates/opa-configmap.yaml +++ b/devops/gc/deploy/templates/opa-configmap.yaml @@ -15,18 +15,11 @@ data: gcp_metadata: scopes: - "{{ .Values.data.scopes }}" - bundles: osdu/instance: service: gcs # NOTE ?alt=media is required resource: 'bundle.tar.gz?alt=media' - osdu/partition/{{ .Values.data.dataPartitionId }}: - service: gcs - resource: 'bundle-{{ .Values.data.dataPartitionId }}.tar.gz?alt=media' - polling: - min_delay_seconds: {{ .Values.conf.minDelaySeconds }} - max_delay_seconds: {{ .Values.conf.maxDelaySeconds }} {{- range (compact .Values.data.dataPartitionIdList) }} osdu/partition/{{ . }}: service: gcs @@ -47,9 +40,6 @@ data: osdu/instance: service: s3 resource: bundle.tar.gz - osdu/partition/{{ .Values.data.dataPartitionId }}: - service: s3 - resource: 'bundle-{{ .Values.data.dataPartitionId }}.tar.gz' {{- range (compact .Values.data.dataPartitionIdList) }} osdu/partition/{{ . }}: service: s3 diff --git a/devops/gc/deploy/values.yaml b/devops/gc/deploy/values.yaml index 5a199f95..d25a3108 100644 --- a/devops/gc/deploy/values.yaml +++ b/devops/gc/deploy/values.yaml @@ -23,7 +23,7 @@ data: bucketName: "" useBundles: "yes" dataPartitionId: "" - dataPartitionIdList: [] + dataPartitionIdList: ["osdu"] scopes: "https://www.googleapis.com/auth/devstorage.read_only" # baremetal only minioHost: "http://minio:9000" -- GitLab