ข้ามไปยังเนื้อหาหลัก

การยืนยันตัวตน

ข้อกำหนดเบื้องต้น

  • ต้องกำหนดค่าชื่อโดเมนสำหรับบริการ Portal เพื่อใช้การยืนยันตัวตนแบบ SSO ระบุโดเมนที่จะใช้สำหรับ Portal
  • ระบุ tenant_id สำหรับ Azure tenant
  • ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Azure CLI บนเครื่องภายในแล้ว และลงชื่อเข้าใช้ด้วย az login
  • Run the provided shell script to create three app registrations and corresponding enterprise applications. Record the script output, as it is required for subsequent steps.
    • cdrplatform-api-access
    • cdrplatform-portal-access
    • cdrplatform-portal-client
bash create-azure-app-registrations.sh cleanroom.glasswall.com
  • ต้องให้สิทธิ์ความยินยอมของผู้ดูแลระบบแก่ enterprise application ar-Halo-portal-client

การติดตั้งการยืนยันตัวตนของ Portal

Glasswall Halo Portal รองรับการยืนยันตัวตนแบบ SSO โดยใช้ Azure Entra ID ทำตามขั้นตอนด้านล่างเพื่อกำหนดค่าการผสานรวม

  1. SSH เข้าไปยัง virtual machine เพื่อรันคำสั่งด้านล่าง

  2. Helm charts ของ cdrplatform-portal และ cdrplatform-portal-access อยู่ในไดเรกทอรี /home/glasswall

k get deploy portal  -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2
  1. ปรับใช้ portal ด้วยการกำหนดค่า Azure AD:
tenant_id=""
portal_domain=""
portal_client_id=""
portal_access_uri=""
image_tag=$(kubectl get deploy portal -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)
enabled_pages="SystemSettings,PolicySettings"
# if XML validation entitlement is enabled
enabled_pages="SystemSettings,PolicySettings,ValidationSettings"
# if ICAP server is enabled
enabled_pages="SystemSettings,PolicySettings,IcapSettings,IcapRequests,IcapReporting"
# if Storage monitoring is enabled
enabled_pages="SystemSettings,PolicySettings,IcapSettings,IcapRequests,IcapReporting,SharePointMonitoring,OneDriveMonitoring"
helm upgrade --install cdrplatform-portal cdrplatform-portal \
--set image.tag="${image_tag:?}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=${portal_domain:?} \
--set ingress.tls.secretName=tls-secret \
--set cloud_provider=local \
--set resources.requests.cpu=500m \
--set resources.requests.memory=500Mi \
--set resources.limits.cpu=500m \
--set resources.limits.memory=500Mi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--set configuration.BackendScope="${portal_access_uri}/PortalUserScope" \
--set configuration.BackendUrl="https://${portal_domain}" \
--set configuration.EnabledPages="${enabled_pages}" \
--set configuration.OIDC.ProviderOptions.Authority="https://login.microsoftonline.com/${tenant_id:?}/v2.0" \
--set configuration.OIDC.ProviderOptions.RedirectUri="https://${portal_domain}/authentication/login-callback" \
--set configuration.OIDC.ProviderOptions.ClientId="${portal_client_id}" \
--set configuration.OIDC.ProviderOptions.PostLogoutRedirectUri="https://${portal_domain}/authentication/logout-callback" \
--atomic
  1. ปรับใช้ portal access ด้วยการกำหนดค่า Azure Entra ID:
tenant_id=""
portal_domain=""
portal_access_uri=""
image_tag=$(kubectl get deploy portal-access -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)
helm upgrade --install cdrplatform-portal-access cdrplatform-portal-access \
--set image.tag="${image_tag:?}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled=true \
--set ingress.tls.domain=${portal_domain:?} \
--set ingress.tls.secretName=tls-secret \
--set cloud_provider=local \
--set resources.requests.cpu=1 \
--set resources.requests.memory=2Gi \
--set resources.limits.cpu=1 \
--set resources.limits.memory=2Gi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--set configuration.AuthenticationScheme=Bearer \
--set configuration.Authentication__Schemes__Bearer__ValidAudiences__0="${portal_access_uri}" \
--set configuration.Authentication__Schemes__Bearer__ValidIssuer=https://sts.windows.net/${tenant_id:?}/ \
--set configuration.Authentication__Schemes__Bearer__Authority=https://login.microsoftonline.com/${tenant_id:?}/v2.0/ \
--atomic
  1. เปิดโดเมน Portal ในเบราว์เซอร์ แล้วเลือก Login with SSO ที่มุมล่างซ้าย

  2. ทำตามกระบวนการเข้าสู่ระบบผ่าน Azure Entra ID และให้สิทธิ์ที่จำเป็นแก่แอปในนามขององค์กรเป็นครั้งแรก

การยืนยันตัวตน API

การยืนยันตัวตน API สามารถกำหนดค่าได้ 2 วิธี -

  • การยืนยันตัวตนแบบ Basic
  • การยืนยันตัวตนแบบ Bearer

การติดตั้งการยืนยันตัวตนแบบ Basic

  1. SSH เข้าไปยัง virtual machine เพื่อรันคำสั่งด้านล่าง
  2. Helm chart cdrplatform-api-access อยู่ในไดเรกทอรี /home/glasswall
  3. กำหนดค่าข้อมูลรับรองในคลัสเตอร์โดยตั้งค่า username และ password โดยใช้คำสั่งด้านล่าง สามารถระบุรหัสผ่านได้หลายรายการโดยคั่นด้วยเครื่องหมายจุลภาค
bash add_secrets.sh organisation0-id <username>
bash add_secrets.sh organisation0-tokens <password>
  1. ดีพลอย api-access ด้วยการยืนยันตัวตนแบบ Basic:
image_tag="$(k get deploy api-access  -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)"
enable_tls="true" or "false"
api_domain="" # ignore if enable_tls is false
helm upgrade --install cdrplatform-api-access cdrplatform-api-access \
--set image.tag="${image_tag:?}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled="${enable_tls:?}" \
--set ingress.tls.domain="${api_domain}" \
--set configuration.CLIENTS__Policy__BaseAddress="http://policy-api:8080" \
--set configuration.CLIENTS__License__BaseAddress="http://license-management.license-management.svc.cluster.local:8080" \
--set configuration.CLIENTS__AsyncApi__BaseAddress="http://async-api:8080" \
--set configuration.AuthenticationScheme="Basic" \
--set cloud_provider=local \
--set resources.requests.cpu=1 \
--set resources.requests.memory=3Gi \
--set resources.limits.cpu=1 \
--set resources.limits.memory=3Gi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--atomic

การติดตั้ง Bearer authentication

  1. ระบุ tenant_id สำหรับ Azure tenant
  2. SSH เข้าไปยัง virtual machine เพื่อรันคำสั่งด้านล่าง
  3. ตรวจสอบให้แน่ใจว่า Helm chart cdrplatform-api-access พร้อมใช้งานในไดเรกทอรี /home/glasswall
  4. ดีพลอยบริการ API Access ด้วยการกำหนดค่า Azure Entra ID:
tenant_id=""
api_valid_audience="api://cdrplatform-api-access"
image_tag=$(kubectl get deploy api-access -o json | jq -r '.spec.template.spec.containers[0].image' | cut -d":" -f2)
enable_tls="true" or "false"
api_domain="" # ignore if enable_tls is false
helm upgrade --install cdrplatform-api-access cdrplatform-api-access \
--set image.tag="${image_tag}" \
--set image.pullPolicy=IfNotPresent \
--set ingress.tls.enabled="${enable_tls}" \
--set ingress.tls.domain="${api_domain}" \
--set configuration.CLIENTS__Policy__BaseAddress="http://policy-api:8080" \
--set configuration.CLIENTS__License__BaseAddress="http://license-management.license-management.svc.cluster.local:8080" \
--set configuration.CLIENTS__AsyncApi__BaseAddress="http://async-api:8080" \
--set configuration.AuthenticationScheme="Bearer" \
--set configuration.Authentication__Schemes__Bearer__ValidAudiences__0="${api_valid_audience}" \
--set configuration.Authentication__Schemes__Bearer__ValidIssuer=https://sts.windows.net/${tenant_id:?}/ \
--set configuration.Authentication__Schemes__Bearer__Authority=https://login.microsoftonline.com/${tenant_id:?}/v2.0/ \
--set cloud_provider=local \
--set resources.requests.cpu=1 \
--set resources.requests.memory=3Gi \
--set resources.limits.cpu=1 \
--set resources.limits.memory=3Gi \
--set securityContext.seccompProfile.type=RuntimeDefault \
--atomic