יצירת מאגרי מחברים

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

בדף הזה מוסבר איך ליצור מאגרי מחברים של Artifact Registry.

פורמטים נתמכים של מחברים

‫Artifact Registry תומך רק במאגרי מחברים בפורמט Docker.

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

  1. מפעילים את Artifact Registry API ומתקינים את Google Cloud CLI.
  2. אופציונלי: הגדרת ברירות מחדל לפקודות ב-CLI של gcloud.
  3. אם אתם רוצים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין את התוכן במאגר, אתם צריכים ליצור ולהפעיל מפתח ב-Cloud KMS עבור המאגר.
  4. מפעילים את Secret Manager API.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. אם Artifact Registry נמצא בתוך גבולות גזרה לשירות VPC Service Controls, צריך להפעיל את Access Context Manager API אם הוא לא מופעל כבר.

    gcloud services enable accesscontextmanager.googleapis.com \
        --project=PROJECT_ID
    

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לניהול מאגרי מידע, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

  • יצירת מאגרי מחברים והענקת גישה למאגרים ספציפיים:אדמין Artifact Registry (roles/artifactregistry.admin) בפרויקט
  • שמירת פרטי הכניסה של המאגר במעלה הזרם בגרסת סוד: אדמין Secret Manager (roles/secretmanager.admin) בפרויקט
  • מתן גישה למקורות במעלה הזרם מחוץ לגבולות גזרה לשירות של VPC Service Controls: Access Context Manager Editor (roles/accesscontextmanager.policyEditor) בארגון של המשאב שבו מוחלת מדיניות הגישה

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

יצירת מאגר מחברים

כשיוצרים מאגר מחברים, צריך להגדיר את ההגדרות הבאות, שאי אפשר לשנות אחרי שיוצרים את המאגר:

  • פורמט הארטיפקט, שיכול להיות רק Docker.
  • המצב של מאגר המידע הוגדר למחבר.
  • מקור במעלה הזרם של מאגר המחברים.
  • המיקום של המאגר.
  • הצפנה באמצעות Google Cloud-powered encryption keys אומפתחות הצפנה בניהול הלקוח. כברירת מחדל, Artifact Registry משתמש ב-Google Cloud-powered encryption keys .

ב-Artifact Registry נאכפים אילוצים על מדיניות הארגון שמחייבים שימוש ב-CMEK להצפנת משאבים או שמגבילים את המפתחות של Cloud KMS שאפשר להשתמש בהם להגנה באמצעות CMEK.

console

  1. פותחים את הדף Repositories במסוף Cloud de Confiance .

    פתיחת הדף Repositories

  2. לוחצים על Create Repository (יצירת מאגר).

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

  4. בקטע פורמט, בוחרים באפשרות Docker.

  5. בקטע Repository mode, בוחרים באפשרות Connector.

  6. בקטע Connector repository source (מקור מאגר מחברים), בוחרים באחת מהאפשרויות הבאות:

    • ‫Docker Hub: המחבר משתמש ב-Docker Hub ‏ (https://docker.io) כמאגר upstream.
    • מותאם אישית: המחבר משתמש בכתובת URL שונה של Docker upstream עבור מאגר upstream.
  7. אם בוחרים באפשרות Custom, בשדה Custom repository מזינים את כתובת ה-URL המלאה של המאגר. אי אפשר לשנות את כתובת ה-URL אחרי שיוצרים את המאגר.

    דוגמאות לכתובות URL נפוצות של שרתים במעלה הזרם מופיעות במאמר שרתים מותאמים אישית במעלה הזרם.

  8. בקטע Connector repository authentication mode, מזינים את הפרטים הבאים:

    1. שם משתמש למאגר במעלה הזרם.
    2. סוד לאחסון פרטי הכניסה ב-Secret Manager.

    אפשר לערוך את הערכים האלה אחרי שיוצרים את המאגר.

  9. בקטע Location Type, בוחרים את המיקום של המאגר:

    1. בוחרים את סוג המיקום: Region או Multi-Region. רשימת המיקומים משתנה בהתאם לבחירה שלכם.

    2. ברשימה Region או Multi-region, בוחרים מיקום.

    מידע על סוגי מיקומים ומיקומים נתמכים זמין במאמר מיקומי מאגרים

  10. מוסיפים תיאור למאגר. התיאורים עוזרים לכם לזהות את המטרה של המאגר ואת סוג הארטיפקטים שהוא מכיל.

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

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

  12. בקטע Encryption, בוחרים את מנגנון ההצפנה למאגר.

    • ‫Google Cloud-powered encryption key – הצפנת תוכן המאגר באמצעות Google Cloud-powered encryption key.
    • מפתח בניהול הלקוח – הצפנת תוכן המאגר באמצעות מפתח שאתם שולטים בו דרך Cloud Key Management Service. הוראות להגדרת מפתחות מופיעות במאמר הגדרת CMEK למאגרי מידע.
  13. בקטע ניתוח ארטיפקטים, בוחרים את הגדרות הסריקה של נקודות החולשה:

    • מופעל – אפשר לסרוק במאגר הזה. צריך להפעיל בפרויקט את Container Scanning API.

      החיוב מתחיל מיד כשמפעילים את Container Scanning API. אחרי שמפעילים את Container Scanning API בפרויקט, בדיקת נקודות חולשה מופעלת בכל המאגרים החדשים והקיימים. כשמעבירים תמונה ל-Artifact Registry, היא נסרקת באופן אוטומטי על ידי Artifact Analysis.

    • מושבת – מניעת סריקה במאגר הזה. אם ה-API של סריקת מאגרי נתונים מופעל בפרויקט, הסריקה ממשיכה במאגרי נתונים אחרים, והמאגר הזה לא ייכלל בסריקה.

      מידע נוסף על אפשרויות לסריקת פגיעויות מופיע במאמר בנושא הפעלה והשבתה של סריקה אוטומטית.

  14. לוחצים על יצירה.

‫Artifact Registry יוצר את המאגר ומוסיף אותו לרשימת המאגרים.

‫CLI של gcloud

כדי ליצור מאגר מחברים, מריצים את הפקודה ליצירת מאגר מחברי Docker או מאגר מחברים בהתאמה אישית.

  gcloud artifacts repositories create CONNECTOR-REPOSITORY-NAME \
      --project=PROJECT_ID \
      --location=LOCATION \
      --description="DESCRIPTION" \
      --repository-format=docker \
      --mode=connector-repository \
      --remote-docker-repo="UPSTREAM-NAME" \
      --remote-username="USERNAME" \
      --remote-password-secret-version="PASSWORD" \

הדגל --mode=connector-repository נדרש כדי להגדיר את המאגר כמאגר מחברים. הערך של --repository-format חייב להיות docker.

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

  • ‫CONNECTOR-REPOSITORY-NAME: שם המאגר. שמות המאגרים צריכים להיות ייחודיים לכל מיקום מאגר בפרויקט.
  • ‫PROJECT_ID: מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
  • ‫LOCATION: המיקום האזורי או הרב-אזורי של המאגר. אפשר להשמיט את הדגל הזה אם מגדירים ברירת מחדל. כדי לראות רשימה של מיקומים נתמכים, מריצים את הפקודה gcloud artifacts locations list.
  • ‫DESCRIPTION: אופציונלי. תיאור של מאגר המחברים. חשוב לא לכלול מידע אישי רגיש, כי תיאורי המאגר לא מוצפנים.
  • ‫UPSTREAM-NAME: השם המוגדר מראש של המאגר במעלה הזרם או כתובת ה-URL שמוגדרת על ידי המשתמש של המאגר במעלה הזרם.
  • ‫USERNAME: אופציונלי. שם המשתמש שלכם לאימות במאגר המידע של upstream.
  • ‫PASSWORD: אופציונלי. גרסת הסוד שמכילה את הסיסמה של מאגר המידע במעלה הזרם.

לדוגמה, הפקודה הבאה יוצרת מאגר מחברים בשם my-connector-repo, שמקשר מאגר Jfrog במעלה הזרם לפרויקט Cloud de Confiance my-project. כתובת ה-URL המלאה של המאגר במעלה הזרם היא https://my-account.jfrog.io/scoped-repo.

gcloud artifacts repositories create my-connector-repo \
    --project=my-project \
    --location=us-east1 \
    --repository-format=docker \
    --mode=connector-repository \
    --remote-docker-repo=https://my-account.jfrog.io/scoped-repo \
    --remote-username=my-username \
    --remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1

מידע נוסף על אימות למאגרי מידע של מקורות ראשוניים זמין במאמר אימות מאגרי מידע של מחברים למקורות ראשוניים.

Terraform

משתמשים במשאב google_artifact_registry_repository כדי ליצור מאגרי תמונות. נדרשת גרסה terraform-provider-google 5.0.0 ומעלה.

אם אתם חדשים בשימוש ב-Terraform עבור Cloud de Confiance by S3NS, תוכלו לעיין בדף תחילת העבודה – Cloud de Confiance by S3NS באתר HashiCorp.

בדוגמה הבאה מוגדר הספק ומאגר מחברים עם שם המשאב Terra‏ my-repo.

```hcl
provider "google" {
    project = "PROJECT-ID"
}

resource "google_artifact_registry_repository" "NAME" {
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "DESCRIPTION"
  format        = "docker"
  mode          = "REMOTE_REPOSITORY"

  # Setting mode="REMOTE_REPOSITORY" and no_cache() together configures the repository as a connector-type repository.
  remote_repository_config {
    description = "CONFIG_DESCRIPTION"
    docker_repository {
      public_repository = "DOCKER_HUB"
    }
    no_cache {}
  }
}
```

Replace the following:

  * `PROJECT-ID`: the Cloud de Confiance project ID.
  * `NAME`: the name of your repository.
  * `LOCATION`: the repository location.
  * `REPOSITORY_ID`: the repository ID.
  * `DESCRIPTION`: optional. A description for the repository.
    Do not include sensitive data. Repository descriptions are
    not encrypted.
  * `KEY`: the name of the Cloud Key Management Service key, if you are using
    [customer-managed encryption keys][cmek] (CMEK) for encryption. Omit
    this argument to use the default setting, Google-managed encryption
    keys.
  * `CONFIG_DESCRIPTION`: optional. A description of the remote
    source.

אחרי שיוצרים את המאגר, מבצעים את הפעולות הבאות:

עריכת תיאורים של מאגרים

אפשר לשנות את תיאור המאגר דרך מסוף Cloud de Confiance או דרך ה-CLI של gcloud.

המסוף

  1. פותחים את הדף Repositories במסוף Cloud de Confiance .

    פתיחת הדף Repositories

  2. ברשימת המאגרים, בוחרים את המאגר ולוחצים על Edit Repository.

  3. עורכים את תיאור המאגר ולוחצים על שמירה.

gcloud

כדי לעדכן את תיאור המאגר, מריצים את הפקודה:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

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

  • ‫REPOSITORY: שם המאגר. אם הגדרתם מאגר ברירת מחדל, אתם יכולים להשמיט את הדגל הזה כדי להשתמש בברירת המחדל.
  • ‫PROJECT: מזהה הפרויקט ב- Cloud de Confiance by S3NS. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
  • ‫ ‫LOCATION הוא המיקום האזורי של המאגר. אפשר להשתמש בדגל הזה כדי להציג מאגרי מידע במיקום ספציפי. אם הגדרתם מיקום ברירת מחדל, אתם יכולים להשמיט את הדגל הזה כדי להשתמש בברירת המחדל.
  • ‫DESCRIPTION: תיאור המאגר.

גישה למקורות במעלה הזרם ב-גבולות גזרה לשירות

לשירותים בגבולות גזרה של VPC Service Controls יש גישה מוגבלת למשאבים מחוץ לגבולות הגזרה.

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

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

ב-Artifact Registry, התפקיד הנדרש הוא Artifact Registry Administrator ‏(roles/artifactregistry.admin).

צפייה בהגדרות של מקורות במעלה הזרם

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

gcloud artifacts vpcsc-config describe \
    --project=PROJECT_ID \
    --location=LOCATION

לדוגמה, משתמשים בפקודה הבאה כדי להציג את ההגדרות של מאגרי מחברים ב-us-east1 בפרויקט my-project:

gcloud artifacts vpcsc-config describe \
    --project=my-project \
    --location=us-east1

אישור גישה למקורות במעלה הזרם

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

gcloud artifacts vpcsc-config allow \
    --project=PROJECT_ID \
    --location=LOCATION

לדוגמה, משתמשים בפקודה הבאה כדי לאפשר לכל מאגרי המחברים ב-us-east1 בפרויקט my-project לגשת למקורות במעלה הזרם שלהם מחוץ לגבולות הגזרה:

gcloud artifacts vpcsc-config allow \
    --project=my-project \
    --location=us-east1

דחיית הגישה למקורות במעלה הזרם

כדי לדחות גישה למקורות במעלה הזרם במיקום שצוין, מריצים את הפקודה:

gcloud artifacts vpcsc-config deny \
    --project=PROJECT_ID \
    --location=LOCATION

לדוגמה, משתמשים בפקודה הבאה כדי לחסום גישה למקורות במעלה הזרם מחוץ לגבולות הגזרה לכל מאגרי המחברים ב-us-west1 בפרויקט my-project:

gcloud artifacts vpcsc-config deny \
    --project=my-project \
    --location=us-west1

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