במאמר הזה מוסבר איך לבצע אימות ב- Cloud de Confiance by S3NS כשמשתמשים ב-Terraform.
Application Default Credentials (ADC) היא הדרך המומלצת לאימות ב-Cloud de Confiance כשמשתמשים ב-Terraform. השירות ADC משמש את ספריות האימות כדרך למצוא את פרטי הכניסה באופן אוטומטי על סמך הסביבה שבה פועלת האפליקציה. כשעובדים עם ADC, Terraform יכול לפעול גם בסביבת הפיתוח וגם בסביבת הייצור בלי שתצטרכו לשנות את שיטת האימות שלו מול השירותים וממשקי ה-API שלCloud de Confiance by S3NS . למידע נוסף לגבי סדר החיפוש של פרטי הכניסה ב-ADC במיקומים השונים, תוכלו לקרוא את המאמר הסבר על Application Default Credentials.
אימות כשמשתמשים ב-Terraform בסביבת פיתוח מקומית
כשמשתמשים ב-Terraform בסביבת פיתוח מקומית, למשל בעמדת פיתוח, אפשר לבצע אימות באמצעות פרטי הכניסה שמשויכים לחשבון המשתמש או לחשבון השירות.
אימות באמצעות חשבון משתמש
כדי להגדיר ADC עם חשבון משתמש, משתמשים ב-Google Cloud CLI:
-
Install the Google Cloud CLI, and then sign in to the gcloud CLI with your federated identity. After signing in, initialize the Google Cloud CLI by running the following command:
gcloud init -
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
מסך הכניסה יופיע. אחרי שנכנסים, פרטי הכניסה נשמרים בקובץ פרטי הכניסה המקומי שמשמש את ADC.
אימות באמצעות התחזות לחשבון שירות
אתם יכולים להתחזות לחשבון שירות כדי להגדיר קובץ ADC מקומי. Terraform משתמש בפרטי הכניסה האלה באופן אוטומטי.
אתם צריכים את התפקיד Service Account Token Creator (
roles/iam.serviceAccountTokenCreator) ב-IAM לחשבון השירות שאליו אתם מתחזים. מידע נוסף זמין במאמר בנושא תפקידים נדרשים.כדי ליצור קובץ מקומי ל-ADC באמצעות התחזות לחשבון שירות, מריצים את הפקודה הבאה:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
אם רוצים לאפשר למשתמשים להשתמש במקור משותף לאימות ראשי ובחשבון שירות משתנה לכל סביבה, צריך להגדיר את השדה impersonate_service_account בקובץ התצורה של Terraform:
provider "google" {
impersonate_service_account = "SERVICE_ACCT_EMAIL"
}
אימות כשמריצים את Terraform ב- Cloud de Confiance
כשמריצים את Terraform בסביבת פיתוח מבוססת-ענן כמו Cloud Shell, הכלי משתמש בפרטי הכניסה שסיפקתם כשנכנסתם לחשבון לצורך אימות. Cloud de Confiance
כשמשתמשים ב-Terraform עם שירותים כמו Compute Engine, App Engine ופונקציות של Cloud Run, אפשר לצרף חשבון שירות שמנוהל על ידי משתמש למשאבים. Cloud de Confiance באופן כללי, אפשר לצרף חשבון שירות למשאבים של השירות שיכולים להריץ או לכלול קוד אפליקציה. כשמחברים חשבון שירות למשאב, הקוד שרץ במשאב יכול להשתמש בחשבון השירות הזה בתור הזהות שלו.
צירוף של חשבון שירות שמשתמש מנהל היא הדרך המועדפת להעברת פרטי הכניסה ל-ADC, בקוד שרץ ב- Cloud de Confiance.
במאמר בחירת תפקידים מוגדרים מראש מוסבר איך מגדירים ב-IAM את התפקידים הנדרשים לחשבון השירות.
במאמרים ומסמכי העזרה של IAM בקשר לצירוף חשבונות שירות מוסבר לאילו משאבים אפשר לצרף חשבונות שירות ואיך מצרפים אותם.
Set up authentication:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAMEwith a name for the service account. -
To provide access to your project and your resources, grant a role to the service account:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com" --role=ROLE
Replace the following:
SERVICE_ACCOUNT_NAME: the name of the service accountPROJECT_ID: the project ID where you created the service accountROLE: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
Grant the required role to the principal that will attach the service account to other resources.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com --member="principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID" --role=roles/iam.serviceAccountUser
Replace the following:
SERVICE_ACCOUNT_NAME: the name of the service account.PROJECT_ID: the project ID where you created the service account.POOL_ID: a workforce identity pool ID.-
SUBJECT_ID: a subject ID; typically the identifier for a user in a workforce identity pool. For details, see Represent workforce pool users in IAM policies.
אימות כשמריצים את Terraform בארגון או אצל ספק שירותי ענן אחר
אם אתם מתכננים להריץ את האפליקציה מחוץ ל- Cloud de Confiance, תצטרכו להעביר פרטי כניסה שמזוהים על ידי Cloud de Confiance כדי להשתמש בשירותיCloud de Confiance .
אימות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה
הדרך המומלצת לאימות מול Cloud de Confiance באמצעות פרטי כניסה שמגיעים מספק זהויות חיצוני היא באמצעות איחוד שירותי אימות הזהות של עומסי עבודה. אפשר ליצור קובץ תצורה עם פרטי הכניסה, ולהגדיר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS שיצביע אליו. הדרך הזו מאובטחת יותר מאשר יצירה של מפתח לחשבון שירות. הוראות להגדרת איחוד שירותי אימות הזהות של עומסי עבודה ב-ADC זמינות במאמר איחוד שירותי אימות הזהות של עומסי עבודה עם עננים אחרים.
אימות באמצעות מפתחות של חשבון שירות
כשמריצים את Terraform בסביבת פיתוח מקומית, בפריסה מקומית או אצל ספק שירותי ענן אחר, אפשר ליצור חשבון שירות, להקצות לו ב-IAM את התפקידים הנדרשים לאפליקציה וליצור מפתח לחשבון השירות.
כך יוצרים מפתח של חשבון שירות ומגדירים אותו כזמין ל-ADC:
מבצעים את ההוראות ליצירת מפתח של חשבון שירות כדי ליצור את חשבון השירות עם התפקידים הנדרשים לאפליקציה ואת המפתח.
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALSto the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.
אימות בשרתי קצה עורפיים של Cloud Storage
בעזרת Terraform אפשר להגדיר את Cloud Storage כקצה עורפי לאחסון קובצי מצב של Terraform. כדי לבצע אימות לקצה עורפי של Cloud Storage, אפשר להשתמש בכל אחת מהשיטות שמתוארות בדף הזה. מידע על משתני הגדרה שקשורים לאימות של קצה עורפי (backend) של Cloud Storage זמין במאמר קצה עורפי (backend) של Terraform ל-Cloud Storage.