כשפורסים ב-Google Kubernetes Engine (GKE), לחשבון השירות לביצוע שמוגדר כברירת מחדל ב-Cloud Deploy יש גישה לכל מרחבי השמות באשכול היעד. אפשר להגדיר את חשבון השירות כך שפריסה תתבצע רק במרחב שמות אחד.
מוודאים שלחשבון השירות של ההרצה לא מוקצה התפקיד
roles/container.developerב-IAM.מקצים לחשבון השירות את התפקיד
roles/container.clusterViewer.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"התפקיד הזה מאפשר לחשבון השירות לבצע אימות באשכול, אבל לא מאפשר לו לבצע פעולות אחרות.
יצירת תפקיד RBAC ב-Kubernetes שמעניק גישת אדמין למרחב השמות.
לתפקיד RBAC בדוגמה הזו יש הרשאות רחבות, ששקולות לתפקיד
clouddeploy.developerב-IAM. כדי לצמצם את הסיכון להרחבת הרשאות, מומלץ לשנות את ההרשאות האלה להרשאות המינימליות שנדרשות לאפליקציות שלכם. הוראות מפורטות זמינות במסמכי התיעוד בנושא RBAC ל-GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]יוצרים
RoleBindingשמאגד את תפקיד ה-RBAC במרחב השמות שבחרתם לחשבון השירות של שירות הביצוע של Cloud Deploy:kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE subjects: # Google Cloud user account - kind: User name: SERVICE_ACCOUNT roleRef: kind: Role name: admin apiGroup: rbac.authorization.k8s.ioקובץ המניפסט הזה מגדיר קישור של מדיניות RBAC לתפקיד
adminבחשבון השירות של ההרצה. NAMESPACEהוא מרחב השמות שרוצים להעניק לחשבון השירות גישה אליו. לחשבון השירות אין גישה למרחבי שמות אחרים באשכול.מחילים את מניפסט ה-RBAC על האשכול:
kubectl apply -f YAML_NAME