GateKeeper Policy Manager เป็นเว็บ UI แบบอ่านอย่างเดียวอย่าง ง่ายสำหรับการดูสถานะนโยบายของ OPA Gatekeeper ในคลัสเตอร์ Kubernetes
คลัสเตอร์ Kubernetes Target อาจเป็นแบบเดียวกับที่ GPM กำลังทำงานอยู่หรือคลัสเตอร์ระยะไกลอื่น ๆ โดยใช้ไฟล์ kubeconfig คุณยังสามารถเรียกใช้ GPM ในเครื่องในเครื่องไคลเอ็นต์และเชื่อมต่อกับคลัสเตอร์ระยะไกล
GPM สามารถแสดง เทมเพลตข้อ จำกัด ที่กำหนดทั้งหมดด้วยรหัส rego ของพวกเขา CRDs การกำหนดค่า GateKeeper ทั้งหมดและ ข้อ จำกัด ทั้งหมดที่มีสถานะปัจจุบันการละเมิดการดำเนินการบังคับใช้ตรงกับคำจำกัดความ ฯลฯ
คุณสามารถดูภาพหน้าจอด้านล่าง
คุณจะต้องมีผู้รักษาประตู OPA ที่ทำงานในคลัสเตอร์ของคุณและอย่างน้อยก็มีเทมเพลตข้อ จำกัด และข้อ จำกัด ที่กำหนดไว้เพื่อใช้ประโยชน์จากเครื่องมือนี้
ℹคุณสามารถปรับใช้ Gatekeeper ไปยังคลัสเตอร์ของคุณได้อย่างง่ายดายโดยใช้โมดูล Kubernetes Fury OPA (เช่นโอเพ่นซอร์ส)
ในการปรับใช้ตัวจัดการนโยบาย Gatekeeper กับคลัสเตอร์ของคุณให้ใช้ไฟล์ kustomization ที่ให้การเรียกใช้คำสั่งต่อไปนี้:
kubectl apply -k . โดยค่าเริ่มต้นสิ่งนี้จะสร้างการปรับใช้และบริการทั้งสองที่มีชื่อ gatekeper-policy-manager ในเนมสเปซของ gatekeeper-system เราขอเชิญคุณเข้าชมไฟล์ kustomization.yaml เพื่อกำหนดค่าเพิ่มเติม
แอพสามารถเรียกใช้เป็นพ็อดในคลัสเตอร์ Kubernetes หรือในเครื่องด้วยไฟล์
kubeconfigมันจะพยายามอย่างเต็มที่เพื่อตรวจจับการกำหนดค่าที่ถูกต้องโดยอัตโนมัติ
เมื่อคุณปรับใช้แอปพลิเคชันหากคุณยังไม่ได้ตั้งค่าการเข้าคุณสามารถเข้าถึง web-UI โดยใช้พอร์ตไปข้างหน้า:
kubectl -n gatekeeper-system port-forward svc/gatekeeper-policy-manager 8080:80จากนั้นเข้าถึงด้วยเบราว์เซอร์ของคุณบน: http://127.0.0.1:8080
นอกจากนี้ยังเป็นไปได้ที่จะปรับใช้ GPM โดยใช้แผนภูมิ Helm ที่ให้ไว้
ก่อนอื่นสร้างไฟล์ values ตัวอย่างเช่น my-values.yaml ด้วยค่าที่กำหนดเองของคุณสำหรับการเปิดตัว ดู readme ของแผนภูมิและค่าเริ่มต้น yaml สำหรับข้อมูลเพิ่มเติม
จากนั้นดำเนินการ:
helm repo add gpm https://sighupio.github.io/gatekeeper-policy-manager
helm upgrade --install --namespace gatekeeper-system --set image.tag=v1.0.13 --values my-values.yaml gatekeeper-policy-manager gpm/gatekeeper-policy-managerอย่าลืมแทนที่
my-values.yamlด้วยพา ธ ไปยังไฟล์ค่าของคุณ
GPM สามารถเรียกใช้งานได้ในเครื่องโดยใช้ Docker และ kubeconfig โดยสมมติว่าไฟล์ kubeconfig ที่คุณต้องการใช้อยู่ที่ ~/.kube/config คำสั่งเพื่อเรียกใช้ GPM ในเครื่องจะเป็น:
docker run -v ~ /.kube/config:/home/gpm/.kube/config -p 8080:8080 quay.io/sighup/gatekeeper-policy-manager:v1.0.13จากนั้นเข้าถึงด้วยเบราว์เซอร์ของคุณบน: http://127.0.0.1:8080
นอกจากนี้คุณยังสามารถเรียกใช้แอพ Flask โดยตรงดูส่วนการพัฒนาสำหรับข้อมูลเพิ่มเติม
GPM เป็นแอปพลิเคชันไร้สัญชาติ แต่สามารถกำหนดค่าได้โดยใช้ตัวแปรสภาพแวดล้อม การกำหนดค่าที่เป็นไปได้คือ:
| ชื่อตัวแปรสภาพแวดล้อม | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
GPM_SECRET_KEY | คีย์ลับที่ใช้ในการสร้างโทเค็น เปลี่ยนค่านี้ในการผลิต | g8k1p3rp0l1c7m4n4g3r |
KUBECONFIG | พา ธ ไปยังไฟล์ kubeconfig หากมีให้ในขณะที่ทำงานภายในคลัสเตอร์ไฟล์การกำหนดค่านี้จะถูกใช้แทน API ของคลัสเตอร์ | |
GPM_LOG_LEVEL | ระดับบันทึก (ดูเอกสารการบันทึก Python สำหรับระดับที่มีอยู่) | INFO |
GPM_AUTH_ENABLED | เปิดใช้งานตัวเลือกการรับรองความถูกต้องในปัจจุบัน: "ไม่ระบุชื่อ", "OIDC" | ไม่ระบุชื่อ |
GPM_PREFERRED_URL_SCHEME | รูปแบบ URL ที่จะใช้ในขณะที่สร้างลิงก์ | http |
GPM_OIDC_REDIRECT_DOMAIN | โดเมนที่ GPM กำลังทำงานอยู่ นี่คือที่ลูกค้าจะถูกเปลี่ยนเส้นทางหลังจากการตรวจสอบสิทธิ์ | |
GPM_OIDC_CLIENT_ID | รหัสไคลเอนต์ที่ใช้ตรวจสอบสิทธิ์กับผู้ให้บริการ OIDC | |
GPM_OIDC_CLIENT_SECRET | ความลับของไคลเอนต์ที่ใช้ในการตรวจสอบสิทธิ์กับผู้ให้บริการ OIDC (ไม่บังคับ) | |
GPM_OIDC_ISSUER | ชื่อโฮสต์ OIDC Issuer (จำเป็นถ้าเปิดใช้งาน OIDC Auth) | |
GPM_OIDC_AUTHORIZATION_ENDPOINT | จุดสิ้นสุดการอนุญาตของ OIDC (ไม่บังคับการตั้งค่าพารามิเตอร์นี้จะปิดการค้นพบส่วนที่เหลือของการกำหนดค่าผู้ให้บริการตั้งค่าอื่น ๆ ทั้งหมดเช่นกันหากตั้งค่านี้) | |
GPM_OIDC_JWKS_URI | OIDC JWKS URI (เป็นทางเลือกการตั้งค่าพารามิเตอร์นี้จะปิดการค้นพบส่วนที่เหลือของการกำหนดค่าผู้ให้บริการตั้งค่าอื่น ๆ ทั้งหมดเช่นกันหากตั้งค่านี้) | |
GPM_OIDC_TOKEN_ENDPOINT | OIDC Token Endpoint (ไม่บังคับการตั้งค่าพารามิเตอร์นี้ปิดใช้งานการค้นพบส่วนที่เหลือของการกำหนดค่าผู้ให้บริการตั้งค่าอื่น ๆ ทั้งหมดเช่นกันหากตั้งค่านี้) | |
GPM_OIDC_INTROSPECTION_ENDPOINT | OIDC Introspection Endpoint (เป็นทางเลือกการตั้งค่าพารามิเตอร์นี้จะปิดการค้นพบส่วนที่เหลือของการกำหนดค่าผู้ให้บริการตั้งค่าอื่น ๆ ทั้งหมดเช่นกันหากตั้งค่านี้) | |
GPM_OIDC_USERINFO_ENDPOINT | OIDC userInfo endpoint (ไม่จำเป็น, การตั้งค่าพารามิเตอร์นี้ปิดใช้งานการค้นพบส่วนที่เหลือของการกำหนดค่าผู้ให้บริการตั้งค่าอื่น ๆ ทั้งหมดเช่นกันหากตั้งค่านี้) | |
GPM_OIDC_END_SESSION_ENDPOINT | OIDC End Session Endpoint (ไม่บังคับการตั้งค่าพารามิเตอร์นี้จะปิดการค้นพบส่วนที่เหลือของการกำหนดค่าผู้ให้บริการตั้งค่าอื่น ๆ ทั้งหมดเช่นกันหากตั้งค่านี้) |
โปรดสังเกตว่าการรับรองความถูกต้องของ OIDC อยู่ในสถานะเบต้า มันได้รับการทดสอบให้ทำงานกับ Keycloak ในฐานะผู้ให้บริการ ตัวแปรสภาพแวดล้อมเหล่านี้มีอยู่แล้วและพร้อมที่จะตั้งค่าในไฟล์
manifests/enable-oidc.yaml
เนื่องจาก v1.0.13 gpm มีการสนับสนุนหลายคลัสเตอร์พื้นฐานเมื่อใช้ kubeconfig ที่มีมากกว่าหนึ่งบริบท GPM จะให้คุณเลือกบริบทที่ถูกต้องจาก UI
หากคุณต้องการเรียกใช้ GPM ในคลัสเตอร์ แต่ด้วยการรองรับแบบหลายคลัสเตอร์มันง่ายเหมือนการติดตั้งไฟล์ kubeconfig ในพ็อตของ GPM ด้วยการกำหนดค่าการเข้าถึงคลัสเตอร์และตั้งค่าตัวแปรสภาพแวดล้อม KUBECONFIG ด้วยเส้นทางไปยังไฟล์ kubeconfig ที่ติดตั้ง หรือคุณสามารถติดตั้งใน /home/gpm/.kube/config และ gpm จะตรวจจับโดยอัตโนมัติ
โปรดจำไว้ว่าผู้ใช้สำหรับกลุ่มควรมีสิทธิ์ที่ถูกต้อง คุณสามารถใช้ไฟล์
manifests/rabc.yamlเป็นข้อมูลอ้างอิงโปรดทราบว่าคลัสเตอร์ที่ GPM กำลังทำงานอยู่ควรจะสามารถเข้าถึงกลุ่มอื่นได้
เมื่อคุณเรียกใช้ GPM ในเครื่องคุณกำลังใช้ไฟล์ kubeconfig เพื่อเชื่อมต่อกับกลุ่มตอนนี้คุณควรเห็นบริบทที่กำหนดทั้งหมดของคุณและคุณสามารถสลับระหว่างพวกเขาได้อย่างง่ายดายจาก UI
หากคุณต้องการใช้ kubeconfig กับ IAM Authentication คุณจะต้องปรับแต่งภาพคอนเทนเนอร์ของ GPM เนื่องจากการตรวจสอบ IAM ใช้ไบนารี AWS ภายนอกที่ไม่รวมอยู่ในค่าเริ่มต้นในภาพ
คุณสามารถปรับแต่งภาพคอนเทนเนอร์ด้วย Dockerfile ดังต่อไปนี้:
FROM curlimages/curl:7.81.0 as downloader
RUN curl https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.5.5/aws-iam-authenticator_0.5.5_linux_amd64 --output /tmp/aws-iam-authenticator
RUN chmod +x /tmp/aws-iam-authenticator
FROM quay.io/sighup/gatekeeper-policy-manager:v1.0.13
COPY --from=downloader --chown=root:root /tmp/aws-iam-authenticator /usr/local/bin/ คุณอาจต้องเพิ่ม aws CLI ด้วยคุณสามารถใช้วิธีการเดียวกับก่อนหน้านี้
ตรวจสอบให้แน่ใจว่า kubeconfig ของคุณมีชุด apiVersion เป็น client.authentication.k8s.io/v1beta1
คุณสามารถอ่านเพิ่มเติมในปัญหานี้








GPM เขียนด้วย Python โดยใช้กรอบ Flask สำหรับแบ็กเอนด์และทำปฏิกิริยากับ UI ยืดหยุ่นและธีมความโกรธสำหรับส่วนหน้า
ในการพัฒนา GPM คุณจะต้องสร้างสภาพแวดล้อมเสมือนจริงของ Python 3 ให้ติดตั้งการอ้างอิงทั้งหมดที่ระบุไว้ใน requirements.txt ที่ให้ไว้ txt สร้างส่วนหน้า REACE และคุณพร้อมที่จะเริ่มแฮ็ค
คำสั่งต่อไปนี้ควรให้คุณทำงาน:
# Build frontend and copy over to static folder
$ pushd app/web-client
$ yarn install && yarn build
$ cp -r build/ * ../static-content/
$ popd
# Create a virtualenv
$ python3 -m venv env
# Activate it
$ source ./env/bin/activate
# Install all the dependencies
$ pip install -r app/requirements.txt
# Run the development server
$ FLASK_APP=app/app.py flask runแนะนำให้เข้าถึงคลัสเตอร์ Kubernetes ด้วย OPA Gatekeeper ที่ปรับใช้แนะนำให้ดีบักแอปพลิเคชัน
คุณจะต้องมีผู้ให้บริการ OIDC เพื่อทดสอบการรับรองความถูกต้อง OIDC คุณสามารถใช้โมดูล Fury-Kubernetes-Keycloak ของเรา
ต่อไปนี้เป็นรายการสิ่งที่อยากได้ของคุณสมบัติที่เราต้องการเพิ่มลงใน GPM (ไม่มีลำดับเฉพาะ):
ConstraintTemplate ในขณะนี้ ได้โปรดแจ้งให้เราทราบหากคุณใช้ GPM และคุณต้องการมีคุณสมบัติใดบ้างโดยการสร้างปัญหาที่นี่ใน GitHub ??