GKE ב-AWS משתמש ב-AWS Key Management Service (KMS) כדי להצפין נפחי EBS. GKE ב-AWS מגרסה 1.7 ואילך תומך בהצפנת נפחים באמצעות מפתחות ראשיים בניהול הלקוח (CMK). ב-GKE ב-AWS בגרסה 1.6.x ובגרסאות מוקדמות יותר יש תמיכה רק במפתחות ראשיים ללקוחות בניהול AWS.
במאמר הזה מוסבר איך מגדירים מפתח CMK בניהול הלקוח כדי להצפין נפחי אחסון. אם לא מגדירים מפתח הצפנה בניהול הלקוח, GKE ב-AWS משתמש במפתחות הצפנה בניהול AWS כברירת מחדל.
סקירה כללית
הרכיבים הבאים של GKE ב-AWS תומכים באמצעי הצפנה של CMK בניהול הלקוח:
- נפח הבסיס של יעד מבוצר (bastion host)
- נפחי הבסיס של שירות הניהול
- נפחי נתונים של שירות הניהול etcd
- נפחי הבסיס של מישור הבקרה של אשכול משתמשים
- נפחי נתונים של etcd במישור הבקרה של אשכול משתמשים
- נפחי הבסיס של צומתי אשכולות משתמשים
מציינים מפתחות בהגדרות של שירות הניהול, האשכול ומאגר הצמתים.
דרישות מוקדמות
כדי להשתמש במפתח CMK בניהול הלקוח עבור נפחי הבסיס של GKE ב-AWS, צריך את הדברים הבאים:
- הרשאות ליצירה או לשימוש במדיניות מפתח AWS KMS. מידע נוסף זמין במאמר שימוש במדיניות מפתחות ב-AWS KMS.
יצירת מדיניות של מפתח
למפתחות AWS KMS צריכה להיות מדיניות מפתחות שמאפשרת ל-GKE ב-AWS ליצור ולקרוא נפחים שמוצפנים באמצעות CMK בניהול הלקוח. דוגמה למדיניות מופיעה בקטע הבא. כדי ליצור את המדיניות, פועלים לפי השלבים הבאים:
בספרייה
anthos-aws, משתמשים בפקודהterraformכדי לקבל את המזהה של שירות הניהול. הפלט כולל את מזהה שירות הניהול. בדוגמה שלמטה, המזהה הואcd anthos-aws terraform output cluster_id
gke-12345abc.terraform output cluster_idgke-12345abcיוצרים מדיניות מפתח של AWS KMS עם התוכן הבא:
{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_NUMBER:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow creating encrypted EBS volumes for EC2 use", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_NUMBER:role/gke-CLUSTER_ID-management", "arn:aws:iam::ACCOUNT_NUMBER:user/AWS_USER", "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_NUMBER", "kms:ViaService": "ec2.AWS_REGION.amazonaws.com" } } }, { "Sid": "Allow attaching encrypted EBS volumes for EC2 Use", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-management", "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-controlplane", "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "ACCOUNT_NUMBER", "kms:ViaService": "ec2.AWS_REGION.amazonaws.com" } } } ] }מחליפים את מה שכתוב בשדות הבאים:
-
ACCOUNT_NUMBER: מספר החשבון שלכם ב-AWS – לדוגמה,1234567890. -
CLUSTER_ID: מזהה אשכול הניהול של GKE ב-AWS – לדוגמה,gke-12345678. -
AWS_USER: שם המשתמש שלכם ב-AWS. -
AWS_REGION: האזור ב-AWS שבו פועלים אשכולות GKE ב-AWS, לדוגמהus-east1.
-
הגדרת משאבים לשימוש במפתח CMK בניהול הלקוח
בקטע הזה מוסבר איך להגדיר מפתחות CMK בניהול הלקוח לרכיבי GKE ב-AWS. לפני שמשדרגים רכיבים קיימים, כדאי לעיין במאמר בנושא שימוש במפתח CMK עם אשכולות קיימים.
יעד מבוצר (bastion host) ושירות ניהול
אתם מגדירים CMK בניהול הלקוח עבור נפח הבסיס של יעד מבוצר (bastion host), נפח הבסיס של שירות מנוהל ונפחי הנתונים של etcd של שירות מנוהל ב-anthos-gke.yaml לפני שמגדירים את שירות הניהול. מידע נוסף זמין במאמרים שילוב של תשתית קיימת וAWSManagementService.
נפחים של מישור הבקרה של אשכול משתמשים
אתם מגדירים CMK בניהול הלקוח עבור מישור הבקרה של אשכול המשתמשים ונפחי הנתונים של etcd בהגדרת AWSCluster. מידע נוסף זמין במאמר בנושא יצירת אשכול משתמש בהתאמה אישית.
נפחי הבסיס של צומתי אשכולות משתמשים
אתם מגדירים מפתח CMK בניהול הלקוח בכרכים של שורש הצומת של אשכול המשתמש בהגדרה של AWSNodePool. מידע נוסף זמין במאמר בנושא יצירת אשכול משתמש בהתאמה אישית.
שימוש ב-CMK עם אשכולות קיימים
אפשר להוסיף הגדרת CMK בניהול הלקוח לרכיבים הקיימים הבאים:
- נפח הבסיס של יעד מבוצר (bastion host)
- נפחי הבסיס של שירות הניהול
- נפחי הבסיס של מישור הבקרה של אשכול משתמשים
- נפחי הבסיס של צומתי אשכולות משתמשים
GKE ב-AWS יוצר מחדש את אמצעי האחסון האלה אחרי שדרוג או שינוי בהגדרות. כדי להוסיף הגדרת CMK בניהול הלקוח לרכיבים קיימים, פועלים לפי ההוראות במאמר שדרוג GKE ב-AWS. כשמשנים את הגדרת המשאב, משנים את השדות הבאים:
| משאב | שדה |
|---|---|
| AWSManagementService | spec.rootVolume and spec.bastionHost.rootVolume |
| AWSCluster | spec.controlPlane.rootVolume |
| AWSNodePools | spec.rootVolume |
כשמשלימים את השדרוג, GKE on AWS יוצר משאבים חדשים עם נפחי CMK שמנוהלים על ידי הלקוח ומצורפים אליהם.