לרוב, האימות משולב עם בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes כדי לספק בקרת גישה מפורטת יותר לאשכולות עבור משתמשים וחשבונות שירות מאומתים. מומלץ ליצור מדיניות RBAC שמשתמשת בשמות קבוצות במקום במזהי משתמשים. אם מקשרים את מדיניות ה-RBAC באופן מפורש לקבוצות, אפשר לנהל את הרשאות הגישה של המשתמשים באופן מלא באמצעות ספק הזהויות, כך שלא צריך לעדכן את האשכול בכל פעם שהרשאות המשתמשים משתנות. שימו לב: כדי להגדיר ב-OIDC בקרת גישה על סמך חברות בקבוצות אבטחה, צריך לוודא שהאשכול מוגדר לתמיכה בקבלת מידע על חברות בקבוצות מספק הזהויות. המסמך הזה רלוונטי רק לאשכולות של חברי צי.
דוגמה
אם רוצים שמשתמשים מאומתים מסוימים יוכלו לגשת לPods של האשכול, צריך ליצור ClusterRole שמעניק גישה למשאבים האלה, כמו בדוגמה הבאה:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pod-reader rules: - apiGroups: [""] # The resource type for which access is granted resources: ["pods"] # The permissions granted by the ClusterRole verbs: ["get", "watch", "list"]
לאחר מכן יוצרים ClusterRoleBinding תואם כדי להעניק את ההרשאות ב-ClusterRole למשתמשים הרלוונטיים – במקרה הזה, חברים בקבוצת האבטחה us-east1-cluster-admins והמשתמש עם המזהה u98523-4509823:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-pods-admins subjects: # Grants anyone in the "us-east1-cluster-admins" group # read access to Pods in any namespace within this cluster. - kind: Group name: gid-us-east1-cluster-admins # Name is case-sensitive apiGroup: rbac.authorization.k8s.io # Grants this specific user read access to Pods in any # namespace within this cluster - kind: User name: uid-u98523-4509823 apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
בדוגמה הבאה, ClusterRoleBinding מעניק הרשאות ב-ClusterRole לקבוצה הרלוונטית עם המזהה 12345678-BBBb-cCCCC-0000-123456789012. ההגדרה הזו רלוונטית רק לספקי Azure AD והיא זמינה לאשכולות של Google Distributed Cloud.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: pod-reader-binding subjects: # Retrieves group information for the group ID mentioned - kind: Group name: 12345678-BBBb-cCCCC-0000-123456789012 apiGroup: rbac.authorization.k8s.io
מידע נוסף על שימוש ב-RBAC זמין במאמרים הגדרת בקרת גישה מבוססת-תפקידים ושימוש בהרשאת RBAC.
יצירת תפקיד RBAC ל Google Cloud גישה למסוף
משתמשים שעברו אימות באמצעות ספקי OIDC יכולים להיכנס לאשכולות ממסוף Google Cloud וגם משורת הפקודה.
משתמשים מאומתים שרוצים לגשת למשאבים של אשכול במסוף Google Cloud צריכים לקבל את ההרשאות הרלוונטיות ב-Kubernetes כדי לעשות זאת. אם אתם לא רוצים להעניק למשתמשים האלה הרשאות נרחבות יותר, כמו הרשאות של אדמין באשכול, אתם יכולים ליצור תפקיד RBAC בהתאמה אישית שכולל את ההרשאות המינימליות לצפייה בצמתים, בכרכים מתמשכים, בתרמילים ובסוגי האחסון של האשכול. כדי להגדיר את קבוצת ההרשאות הזו, צריך ליצור משאב ClusterRole RBAC, cloud-console-reader, באשכול.
cloud-console-reader מעניק למשתמשים שלו את ההרשאות get, list ו-watch בצמתים של האשכול, בכרכים מתמשכים, בתרמילים ובסוגי האחסון, מה שמאפשר להם לראות פרטים על המשאבים האלה.
kubectl
כדי ליצור את cloud-console-reader ClusterRole ולהחיל אותו על האשכול, מריצים את הפקודה הבאה:
cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cloud-console-reader
rules:
- apiGroups: [""]
resources: ["nodes", "persistentvolumes", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml
אחרי זה תוכלו להעניק את ההרשאה ClusterRole למשתמשים כשאתם מגדירים את מדיניות ההרשאות, כמו שמתואר בסעיף הקודם. שימו לב: משתמשים צריכים גם הרשאות IAM כדי לראות אשכולות במסוף Google Cloud .