הגדרה של איחוד שירותי אימות הזהות של כוח העבודה באמצעות PingOne AIC

במאמר הזה מוסבר איך להגדיר איחוד שירותי אימות הזהות של כוח העבודה באמצעות PingOne Advanced Identity Cloud ‏ (AIC) כספק זהויות (IdP) ולנהל את הגישה אלGoogle Cloud. אחרי שמגדירים את ספק הזהויות PingOne AIC, משתמשים מאוחדים יכולים לגשת לשירותי Google Cloud שמבוססים על איחוד שירותי אימות הזהות של כוח העבודה באמצעות פרוטוקול SAML 2.0.

לפני שמתחילים

  1. מוודאים שהגדרתם Google Cloud ארגון.
  2. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  3. יצירת IdP מתארח

    1. בקטע Native Consoles > Access Management, עוברים אל Realms > REALM_NAME > Dashboard ולוחצים על SAML Applications.
    2. לוחצים על הוספת ספק ישויות > מתארח.
    3. מזינים מזהה ישות. שומרים את הערך הזה לשימוש מאוחר יותר.

      1. מוודאים שהערך של Entity Provider Base URL נכון. מערכת Advanced Identity Cloud משתמשת בערך הזה לכל נקודות הקצה שקשורות ל-SAML 2.0.
      2. בקטע Meta Aliases (כינויים של קובצי Meta), מספקים ערך שמתאים לכתובת URL במאפיין Identity Provider Meta Alias (כינוי של קובץ Meta של ספק זהויות). הכינוי הזה חייב להיות ייחודי במעגל האמון.
      3. לוחצים על יצירה.
      4. בכרטיסייה Assertion Processing (עיבוד הצהרות), בקטע Attribute Mapper (מיפוי מאפיינים), ממפים את שמות מאפייני ה-SAML לשמות מאפיינים מקומיים. שמות מאפייני ה-SAML הם השמות שמשמשים בטענת הנכונות (assertion).
      5. לוחצים על הוספה או על עדכון לכל מיפוי.
      6. לוחצים על שמירת השינויים.

    שימוש במאפיינים

    בקטע הזה מוסבר איך להשתמש במאפיינים מטענת הנכונות (assertion) של SAML.

    בדוגמאות הבאות, מאפיינים בטענת הנכוֹנוּת (assertion) של SAML ממופים למאפיינים מקומיים:

    מאפיין SAML מאפיין מקומי
    IDPEmail mail
    FirstName givenName
    groups groups

    מגדירים את המאפיינים הנדרשים בקטע 'מיפוי מאפיינים'. תמפו את המאפיינים האלה בהמשך המדריך הזה, כשתיצרו את ספק מאגר הזהויות של כוח העבודה.

    ייצוא מטא-נתונים של ספק

    אפשר לגשת למטא-נתונים של SAML 2.0 של הספק המתארח באחת מהדרכים הבאות:

    • Over REST

      מריצים את הפקודה הבאה:

      curl --output METADATA_XML \
          "https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM"
      
    • בדפדפן

      פותחים את כתובת ה-URL של המטא-נתונים של סביבת הדייר בדפדפן כדי להוריד את קובץ ה-XML: https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM

    1. שומרים את קובץ ה-XML במחשב המקומי.

    ייבוא Google כספק שירות מרוחק

    1. מכינים את קובץ ה-XML של המטא-נתונים של ספק השירות. Google Cloud משתמשים בתבנית הבאה ומחליפים את ערכי ה-placeholder:

      <?xml version="1.0" encoding="UTF-8"?>
      <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID">
         <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
            <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID" index="0" isDefault="true"/>
         </md:SPSSODescriptor>
      </md:EntityDescriptor>
      
    2. מייבאים את המטא-נתונים באחת מהדרכים הבאות:

      • במסוף

        1. במסוף Admin של PingOne AIC, עוברים אל SAML Applications (אפליקציות SAML).
        2. לוחצים על הוספת ספק ישויות > מרחוק.
        3. מעלים את קובץ ה-XML של מטא-נתוני ספק השירות שיצרתם. Google Cloud
        4. לוחצים על יצירה.
      • Over REST

        1. ממירים את המטא-נתונים של ה-XML למחרוזת בקידוד base64url.
        2. קבלת טוקן גישה
        3. מריצים את הפקודה הבאה:

          curl --request POST \
              --header 'authorization: Bearer ACCESS_TOKEN' \
              --header 'Content-Type: application/json' \
              --header 'Accept-API-Version: resource=1.0' \
              --data-raw '{"standardMetadata": "BASE64URL_ENCODED_METADATA"}' \
              'https://TENANT_ENV_FQDN/am/json/realms/root/realms/alpha/realm-config/saml2/remote?_action=importEntity'
          

    יצירת מעגל מהימן (CoT)

    1. עוברים אל Realms > REALM_NAME > Applications > Federation > Circles of Trust.
    2. לוחצים על הוספת מעגל מהימן.
    3. מזינים שם ולוחצים על יצירה.
    4. בדף Circle of Trust, בנכס Entity Providers, בוחרים את ספק הזהויות המתארח ואת Google Cloud ספק השירות המרוחק.
    5. לוחצים על שמירת השינויים.

    יצירת ספק זהויות של מאגר כוח העבודה ב-PingOne AIC

    בקטע הזה מוסבר איך ליצור ספק מאגר זהויות של כוח עבודה כדי לאפשר למשתמשים בספק הזהויות שלכם לגשת אל Google Cloud. אפשר להגדיר את הספק לשימוש בפרוטוקול SAML.

    יצירת ספק של מאגר זהויות של כוח עבודה ב-SAML

    1. כדי ליצור ספק של מאגר זהויות של כוח עבודה ב-SAML, צריך לוודא שמטא-הנתונים של ספק הזהויות כוללים לפחות את מזהה הישות ב-SAML, את כתובת ה-URL של הכניסה היחידה ומפתח ציבורי אחד לחתימה. לשם כך, בצע את הצעדים הבאים:

      gcloud

      1. שומרים את המטא-נתונים של SAML מאפליקציית PingOne AIC.

      2. כדי ליצור את הספק של מאגר הזהויות של כוח העבודה ב-SAML, מריצים את הפקודה הבאה:

        gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
            --workforce-pool="WORKFORCE_POOL_ID" \
            --display-name="DISPLAY_NAME" \
            --description="DESCRIPTION" \
            --idp-metadata-path="XML_METADATA_PATH" \
            --attribute-mapping="ATTRIBUTE_MAPPING" \
            --attribute-condition="ATTRIBUTE_CONDITION" \
            --location=global
        

        מחליפים את מה שכתוב בשדות הבאים:

        • WORKFORCE_PROVIDER_ID: מזהה הספק.
        • WORKFORCE_POOL_ID: המזהה של מאגר הזהויות של כוח העבודה.
        • DISPLAY_NAME: שם מוצג.
        • DESCRIPTION: תיאור.
        • XML_METADATA_PATH: הנתיב לקובץ המטא-נתונים בפורמט XML שייצאתם מ-PingOne AIC.
        • ATTRIBUTE_MAPPING: מיפוי המאפיינים. לדוגמה, google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0].
        • ATTRIBUTE_CONDITION: תנאי למאפיין (לא חובה). לדוגמה, כדי להגביל את המאפיין ipaddr לטווח מסוים של כתובות IP, אפשר ליצור את התנאי assertion.ipaddr.startsWith('98.11.12.').

        מידע נוסף זמין במאמר בנושא מיפוי מאפיינים.

        הפקודה הזו מקצה את subject, ‏groups ו-department בטענת הנכונות (assertion) של SAML למאפיינים google.subject, ‏google.groups ו-attribute.department בהתאמה. בנוסף, באמצעות התנאי למאפיין אפשר להבטיח שרק משתמשים בטווח מסוים של כתובות IP יוכלו להיכנס באמצעות ספק הזהויות הזה לכוח העבודה.

      המסוף

      כדי להגדיר את פלאגין שמתממשק עם שירותים חיצוניים של SAML באמצעות המסוף Google Cloud , בצע את הפעולות הבאות:

      1. במסוף Google Cloud , עוברים לדף Workforce Identity Pools: מעבר אל Workforce Identity Pools
      2. בטבלה Workforce Identity Pools (מאגרי זהויות של כוח עבודה), בוחרים את המאגר שרוצים ליצור עבורו את הספק.
      3. בקטע ספקים, לוחצים על הוספת ספק.
      4. ברשימה Select a Provider vendor (בחירת ספק), בוחרים באפשרות Generic Identity Provider (ספק זהויות כללי).
      5. בקטע Select an authentication protocol, בוחרים באפשרות SAML.
      6. בקטע Create a provider, מבצעים את הפעולות הבאות:
        1. בשדה Name, מזינים שם לספק.
        2. אופציונלי: בשדה Description, מזינים תיאור של הספק.
        3. בקטע IDP metadata file (XML) (קובץ מטא-נתונים של IdP‏ (XML)), בוחרים את קובץ ה-XML של המטא-נתונים שייצאתם מ-PingOne AIC.
        4. מוודאים שהאפשרות ספק מופעל מופעלת.
        5. לוחצים על Continue.
      7. בקטע שיתוף פרטי הספק, לוחצים על המשך.
      8. בקטע Configure provider (הגדרת ספק), מבצעים את הפעולות הבאות:

        1. בשדה Attribute mapping (מיפוי מאפיינים), מזינים ביטוי CEL עבור google.subject (לדוגמה, assertion.subject).
        2. אופציונלי: כדי להזין מיפויים אחרים, לוחצים על הוספת מיפוי ומזינים מיפויים אחרים – לדוגמה:

          google.subject=assertion.subject,
          google.groups=assertion.attributes['https://example.com/aliases'],
          attribute.costcenter=assertion.attributes.costcenter[0]
          
        3. אופציונלי: כדי להוסיף תנאי של מאפיינים, לוחצים על הוספת תנאי ומזינים ביטוי CEL שמייצג תנאי של מאפיינים. לדוגמה, כדי להגביל את המאפיין ipaddr לטווח מסוים של כתובות IP, אפשר ליצור את התנאי assertion.attributes.ipaddr.startsWith('98.11.12.'). התנאי הזה מבטיח שרק משתמשים עם כתובת IP שמתחילה ב-98.11.12. יוכלו להיכנס באמצעות ספק הזהויות הזה לכוח העבודה.

      9. כדי להפעיל רישום מפורט ביומן הביקורת, בקטע רישום מפורט, לוחצים על המתג הפעלת רישום ביומן הביקורת של ערכי מאפיינים.

      10. כדי ליצור את הספק, לוחצים על שליחה.

    ניהול הגישה למשאבים Google Cloud

    בקטע הזה מוסבר איך לנהל את הגישה ל Google Cloud משאבים עבור משתמשי PingOne AIC.

    הפרויקט לדוגמה שמופיע במדריך הזה יכול להיות שונה מהפרויקט שבו השתמשתם כדי להגדיר את איחוד שירותי אימות הזהות של כוח העבודה.

    אפשר לנהל תפקידים לזהויות בודדות, לקבוצת זהויות או למאגר שלם. מידע נוסף מופיע במאמר מזהים של חשבונות משתמשים בכוח העבודה בכללי מדיניות הרשאה.

    שימוש במאפיינים של מחלקה ממופה

    כדי להקצות את התפקיד Storage Admin (roles/storage.admin) לכל הזהויות במחלקה ספציפית בפרויקט TEST_PROJECT_ID, מריצים את הפקודה הבאה:

    gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
        --role="roles/storage.admin" \
        --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • TEST_PROJECT_ID: מזהה הפרויקט.
    • WORKFORCE_POOL_ID: המזהה של מאגר הזהויות של כוח העבודה.
    • DEPARTMENT_VALUE: הערך הממופה של attribute.department.

    שימוש בקבוצות ממופות

    כדי להקצות את התפקיד Storage Admin (roles/storage.admin) לכל הזהויות בקבוצה GROUP_ID בפרויקט TEST_PROJECT_ID, מריצים את הפקודה הבאה:

    gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
        --role="roles/storage.admin" \
        --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • TEST_PROJECT_ID: מזהה הפרויקט.
    • WORKFORCE_POOL_ID: המזהה של מאגר הזהויות של כוח העבודה.
    • GROUP_ID: קבוצה בהצהרה הממופה google.groups.

    כניסה לחשבון ובדיקת גישה

    בקטע הזה נכנסים כמשתמש של מאגר הזהויות של כוח העבודה ובודקים את הגישה.

    כניסה

    כניסה לחשבון במסוף (איחוד)

    כדי להיכנס למסוף Google Cloud איחוד שירותי אימות הזהות של כוח עבודה, שנקרא גם המסוף (מאוחד), מבצעים את הפעולות הבאות:

    1. עוברים לדף הכניסה של המסוף (איחוד).

      כניסה למסוף (איחוד)

    2. מזינים את שם הספק בפורמט הבא:
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. כשמוצגת בקשה, מזינים את פרטי הכניסה ל-PingOne AIC.

    כניסה מבוססת דפדפן ל-Google Cloud CLI

    כדי להיכנס ל-CLI של gcloud באמצעות הדפדפן:

    מריצים את הפקודה הבאה כדי ליצור קובץ תצורה לכניסה:

    ‫Linux ו-macOS

    gcloud iam workforce-pools create-login-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
        --output-file=LOGIN_CONFIG_PATH

    ‏Windows (PowerShell)

    gcloud iam workforce-pools create-login-config `
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID `
        --output-file=LOGIN_CONFIG_PATH

    מחליפים את מה שכתוב בשדות הבאים:

    • WORKFORCE_POOL_ID: המזהה של מאגר הזהויות של כוח העבודה.
    • WORKFORCE_PROVIDER_ID: המזהה של ספק איחוד שירותי אימות הזהות של כוח העבודה.
    • LOGIN_CONFIG_PATH: הנתיב שבו ייכתב קובץ התצורה להתחברות. לדוגמה, login-config.json.

    קובץ הגדרות הכניסה מכיל את נקודות הקצה (endpoints) שבהן ה-CLI של gcloud משתמש כדי להפעיל את תהליך האימות בדפדפן ולהגדיר את הקהל לספק הזהויות שהוגדר במאגר הזהויות של כוח העבודה. הקובץ לא מכיל מידע סודי.

    התוכן של קובץ התצורה לכניסה נראה כך:

    {
      "universe_domain": "googleapis.com",
      "universe_cloud_web_domain": "cloud.google",
      "type": "external_account_authorized_user_login_config",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "auth_url": "https://auth.cloud.google/authorize",
      "token_url": "https://sts.googleapis.com/v1/oauthtoken",
      "token_info_url": "https://sts.googleapis.com/v1/introspect"
    }

    מפנים לקובץ התצורה לכניסה באמצעות משתנה סביבה, מאפיין בהגדרות האישיות הפעילות של ה-CLI של gcloud, או משתמשים בו ישירות באמצעות הפקודה gcloud auth login:

    משתנה הסביבה

    כדי להשתמש בקובץ התצורה שמשמש לכניסה באמצעות משתנה סביבה, מבצעים את ההוראות הבאות:

    1. מגדירים את משתנה הסביבה CLOUDSDK_AUTH_LOGIN_CONFIG_FILE לנתיב של קובץ התצורה להתחברות.
    2. מריצים את הפקודה הבאה:

      gcloud auth login
    3. ה-CLI של gcloud מפנה למשתנה הסביבה כדי למצוא את קובץ התצורה של הכניסה, ואז מתחיל את תהליך האימות. פועלים בהתאם להליך שבדפדפן כדי לאמת את ה-CLI של gcloud ולאשר לו גישה למשאבים בשמכם עבור פקודות עתידיות.

    כדי להפסיק להשתמש בקובץ התצורה שמשמש לכניסה לפקודות gcloud auth login, מוחקים את משתנה הסביבה CLOUDSDK_AUTH_LOGIN_CONFIG_FILE.

    ההגדרות האישיות של ה-CLI של gcloud

    כדי להשתמש בקובץ התצורה שמשמש לכניסה עם מאפיין תצורה של ה-CLI של gcloud:

    1. מגדירים את המאפיין auth/login_config_file של ההגדרות האישיות הפעילות של ה-CLI של gcloud לנתיב של קובץ התצורה לכניסה באמצעות הפקודה הבאה:

      gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
    2. מריצים את הפקודה הבאה:

      gcloud auth login
    3. ה-CLI של gcloud מפנה למאפיין ההגדרות כדי למצוא את קובץ ההגדרות של הכניסה, ואז מתחיל את תהליך האימות. פועלים בהתאם להליך שבדפדפן כדי לאמת את ה-CLI של gcloud ולאשר לו גישה למשאבים בשמכם עבור פקודות עתידיות.

    כדי להפסיק להשתמש בקובץ התצורה שמשמש לכניסה לפקודות gcloud auth login, מבטלים את הגדרת המאפיין באמצעות הפקודה הבאה:

    gcloud config unset auth/login_config_file

    gcloud auth login

    כדי להשתמש ישירות בקובץ התצורה לכניסה באמצעות הפקודה gcloud auth login, פועלים לפי ההוראות הבאות:

    • אם השתמשתם בדגל --activate כשייצרתם את קובץ התצורה לכניסה, מריצים את הפקודה הבאה:

      gcloud auth login
    • אם לא השתמשתם בדגל --activate כשייצרתם את קובץ התצורה לכניסה, מריצים את הפקודה הבאה:

      ‫Linux ו-macOS

      gcloud auth login \
          --login-config=LOGIN_CONFIG_PATH

      ‏Windows (PowerShell)

      gcloud auth login `
          --login-config=LOGIN_CONFIG_PATH

      מחליפים את LOGIN_CONFIG_PATH בנתיב של קובץ התצורה להתחברות.

    הפקודה gcloud auth login שומרת את פרטי הכניסה לגישה בספריית הבית. המשתמש המאומת הופך למשתמש הפעיל בהגדרות האישיות הפעילות של ה-CLI של gcloud. אלא אם משנים את ברירת המחדל, ה-CLI של gcloud משתמש בפרטי הכניסה המאוחסנים האלה כדי לגשת אל Google Cloud.

    כניסה באמצעות דפדפן ללא GUI ל-CLI של gcloud

    כדי להיכנס ל-PingOne AIC באמצעות ה-CLI של gcloud באמצעות פרוטוקול SAML:

    1. נכנסים עם חשבון משתמש לאפליקציית PingOne AIC ומקבלים את התגובה ב-SAML.
    2. שומרים את התגובה ב-SAML שמוחזרת על ידי PingOne AIC במיקום מאובטח במחשב המקומי. מאחסנים את הנתיב במשתנה סביבה – לדוגמה: SAML_ASSERTION_PATH=/tmp/saml_assertion.xml.
    3. יוצרים קובץ תצורה:

      gcloud iam workforce-pools create-cred-config \
          locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
          --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
          --credential-source-file=SAML_ASSERTION_PATH \
          --workforce-pool-user-project=PROJECT_ID \
          --output-file=config.json
      

      מחליפים את מה שכתוב בשדות הבאים:

      • SAML_ASSERTION_PATH: הנתיב לקובץ של טענת הנכונות ב-SAML.
      • PROJECT_ID: מזהה הפרויקט.
    4. קובץ התצורה שייווצר יהיה דומה לזה:

      {
        "type": "external_account",
        "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
        "subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
        "token_url": "https://sts.googleapis.com/v1/token",
        "credential_source": {
          "file": "SAML_ASSERTION_PATH"
        },
        "workforce_pool_user_project": "PROJECT_ID"
      }
      
    5. כדי להיכנס ל-CLI של gcloud באמצעות החלפת אסימונים, מריצים את הפקודה הבאה:

      gcloud auth login --cred-file=config.json
      

      לאחר מכן, gcloud מעביר בשקיפות את פרטי הכניסה ב-PingOne AIC לאסימוני גישה זמניים, כדי שתוכלו לבצע קריאות gcloud אחרות ל- Google Cloud. Google Cloud הפלט אמור להיראות כך:

      Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].

    6. כדי להציג את החשבונות עם פרטי הכניסה ואת החשבון הפעיל, מריצים את הפקודה הבאה:

      gcloud auth list
      

    בדיקת גישה

    אתם יכולים לגשת לשירותים של Google Cloud שמאפשרים איחוד שירותי אימות הזהות של כוח העבודה, שקיבלתם אליהם גישה. מוקדם יותר במדריך הזה הקציתם את התפקיד Storage Admin לכל הזהויות במחלקה או בקבוצה ספציפית בפרויקט TEST_PROJECT_ID. כדי לבדוק אם יש לכם גישה, אתם יכולים להציג את הרשימה של הקטגוריות של Cloud Storage.

    כניסה לחשבון במסוף (איחוד)

    כדי לאמת את הגישה במסוף (איחוד), מבצעים את הפעולות הבאות:

    1. נכנסים לדף Cloud Storage.
    2. מוודאים שאפשר לראות את רשימת הקטגוריות הקיימות של הפרויקט TEST_PROJECT_ID.

    ‫CLI של gcloud

    כדי לראות את הקטגוריות והאובייקטים של Cloud Storage בפרויקט שיש אליו גישה, מריצים את הפקודה הבאה:

    gcloud alpha storage ls --project="TEST_PROJECT_ID"
    

    לחשבון המשתמש צריכה להיות ההרשאה serviceusage.services.use בפרויקט שהוגדר בסשן של ה-CLI של gcloud: ‏PROJECT_ID.

    המאמרים הבאים