שליטה בגישה באמצעות תגים

הוספת תגים למשאבים ב-BigQuery מאפשרת לנהל באופן מותנה את ההרשאות בטבלאות, בתצוגות ובמערכי הנתונים. באמצעות ניהול זהויות והרשאות גישה (IAM), אתם יכולים להשתמש בתגים (צמדים של מפתח/ערך) כדי להקצות תפקידים או לדחות גישה (גרסת טרום-השקה (Preview)) באמצעות כללי מדיניות דחייה. אפשר גם לצרף תגי משילות מידע (גרסת טרום-השקה (Preview)) לעמודות בטבלה, ולהשתמש במדיניות הנתונים כדי להגביל את הגישה לנתונים בעמודות.

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

מגבלות

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

  • אפשר לצרף עד 50 תגים לטבלה או למערך נתונים.

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

  • משתמשים עם גישה מותנית למערך נתונים או לטבלה לא יכולים לשנות את ההרשאות למשאב הזה דרך מסוף Google Cloud . אפשר לשנות הרשאות רק באמצעות הכלי bq ו-BigQuery API.

  • בחלק מהשירותים מחוץ ל-BigQuery אי אפשר לאמת כמו שצריך את התנאים של תגי IAM. אם התנאי של התג חיובי, כלומר למשתמש מוקצה תפקיד במשאב רק אם למשאב יש תג מסוים, הגישה למשאב נדחית בלי קשר לתגים שמצורפים אליו. אם תנאי התג הוא שלילי, כלומר למשתמש מוקצה תפקיד במשאב רק אם למשאב הזה אין תג מסוים, תנאי התג לא נבדק.

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

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

שני התפקידים הבאים שמוגדרים מראש ב-IAM כוללים את כל ההרשאות הנדרשות ב-BigQuery:

  • בעלי נתונים ב-BigQuery‏ (roles/bigquery.dataOwner)
  • אדמין ב-BigQuery‏ (roles/bigquery.admin)

ההרשאות של מנהל המשאבים להוספה ולהסרה של תגים נכללות בתפקיד "משתמש בתגים" (roles/resourcemanager.tagUser).

ההרשאות הנדרשות

כדי להשתמש בתגים ב-BigQuery, אתם צריכים את ההרשאות הבאות:

פעולה ממשקי BigQuery (API, ‏ CLI, מסוף) ו-Terraform Cloud Resource Manager API או gcloud
צירוף תג לטבלה או לתצוגה
  • הרשאת bigquery.tables.createTagBinding בטבלה או בתצוגה
  • ההרשאה resourcemanager.tagValueBindings.create בערך התג
  • הרשאת bigquery.tables.create כדי לצרף תג כשיוצרים טבלה או תצוגה
  • הרשאת bigquery.tables.update כדי לצרף תג כשמעדכנים טבלה או תצוגה
  • הרשאת bigquery.tables.createTagBinding בטבלה או בתצוגה
  • ההרשאה resourcemanager.tagValueBindings.create בערך התג
הסרת תג מטבלה או מתצוגה
  • הרשאת bigquery.tables.deleteTagBinding בטבלה או בתצוגה
  • ההרשאה resourcemanager.tagValueBindings.delete בערך התג
  • הרשאת bigquery.tables.update כדי להסיר תג כשמעדכנים טבלה או תצוגה
  • הרשאת bigquery.tables.deleteTagBinding בטבלה או בתצוגה
  • ההרשאה resourcemanager.tagValueBindings.delete בערך התג
צירוף תג לקבוצת נתונים
  • ההרשאה bigquery.datasets.createTagBinding במערך הנתונים
  • ההרשאה resourcemanager.tagValueBindings.create בערך התג
  • ההרשאה bigquery.datasets.create כדי לצרף תג כשיוצרים מערך נתונים
  • הרשאת bigquery.datasets.update כדי לצרף תג כשמעדכנים מערך נתונים
  • ההרשאה bigquery.datasets.createTagBinding במערך הנתונים
  • ההרשאה resourcemanager.tagValueBindings.create בערך התג
הסרת תג מקבוצת נתונים
  • ההרשאה bigquery.datasets.deleteTagBinding במערך הנתונים
  • ההרשאה resourcemanager.tagValueBindings.delete בערך התג
  • ההרשאה bigquery.datasets.update כדי להסיר תג כשמעדכנים מערך נתונים
  • ההרשאה bigquery.datasets.deleteTagBinding במערך הנתונים
  • ההרשאה resourcemanager.tagValueBindings.delete בערך התג

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

  • כדי להציג את רשימת מפתחות התגים שמשויכים לארגון או לפרויקט הורה, צריך את ההרשאה resourcemanager.tagKeys.list ברמת ההורה של מפתח התג ואת ההרשאה resourcemanager.tagKeys.get לכל מפתח תג. כדי לראות את רשימת מפתחות התגים במסוף BigQuery, לוחצים על שם מערך הנתונים ואז על Edit details, או לוחצים על שם הטבלה או התצוגה ואז על Edit > Edit details.

  • כדי להציג את רשימת ערכי התגים של מפתחות שמשויכים לארגון או לפרויקט הורה, צריך את ההרשאה resourcemanager.tagValues.list ברמת ההורה של ערך התג ואת ההרשאה resourcemanager.tagValues.get לכל ערך תג. כדי לראות את רשימת הערכים של מפתחות התגים במסוף BigQuery, לוחצים על שם מערך הנתונים ואז על Edit details, או לוחצים על שם הטבלה או התצוגה ואז על Edit > Edit details.

כדי להשתמש בתגים ב-Cloud Resource Manager API או ב-gcloud, אתם צריכים את ההרשאות הבאות:

  • כדי להציג את רשימת התגים שמצורפים לטבלה או לתצוגה באמצעות Cloud Resource Manager API או ה-CLI של gcloud, אתם צריכים את הרשאת ה-IAM‏ bigquery.tables.listTagBindings.
  • כדי להציג את התגים בפועל של טבלה או תצוגה, אתם צריכים את ההרשאה bigquery.tables.listEffectiveTags ב-IAM.
  • כדי להציג רשימה של התגים שמצורפים למערך נתונים באמצעות Cloud Resource Manager API או ה-CLI של gcloud, אתם צריכים את הרשאת ה-IAM‏ bigquery.datasets.listTagBindings.
  • כדי להציג את רשימת התגים בפועל של מערך נתונים, צריך את ההרשאה bigquery.datasets.listEffectiveTags ב-IAM.

יצירת מפתחות וערכים של תגים

אתם יכולים ליצור תג לפני שאתם מצרפים אותו למשאב ב-BigQuery, או ליצור תג באופן ידני כשאתם יוצרים את המשאב באמצעות מסוףGoogle Cloud .

במאמרי העזרה של מנהל המשאבים מוסבר איך יוצרים מפתחות וערכים של תגים: יצירת תג והוספת ערכים של תגים.

תיוג קבוצות נתונים

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

הוספת תגים כשיוצרים מערך נתונים חדש

אחרי שיוצרים תג, אפשר לצרף אותו למערך נתונים חדש ב-BigQuery. אפשר לצרף רק ערך תג אחד לקבוצת נתונים לכל מפתח תג נתון. אפשר לצרף עד 50 תגים לקבוצת נתונים.

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

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

  3. בחלונית Explorer, בוחרים את הפרויקט שבו רוצים ליצור את מערך הנתונים.

  4. לוחצים על View actions > Create dataset.

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

  6. מרחיבים את הקטע Tags.

    1. כדי להחיל תג קיים, מבצעים את הפעולות הבאות:

      1. לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.

        אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.

      2. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

      1. לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization,‏ Project או Tags.

      2. אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של PROJECT_ID או של ORGANIZATION_ID ולוחצים על Save.

      3. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

  7. לוחצים על Create dataset.

SQL

משתמשים בהצהרה CREATE SCHEMA.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE SCHEMA PROJECT_ID.DATASET_ID
    OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: המזהה של קבוצת הנתונים שאתם יוצרים.
    • ‫TAG_KEY_1: השם ממרחב השמות של המפתח שרוצים להגדיר כתג הראשון במערך הנתונים, לדוגמה 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של ערך התג, לדוגמה 'prod' או 'sales'.
    • TAG_KEY_2: שם המפתח ממרחב השמות של התג השני.
    • ‫TAG_VALUE_2: השם המקוצר של ערך התג השני.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

משתמשים בפקודה bq mk --dataset עם הדגל --add_tags:

bq mk --dataset \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID

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

  • ‫TAG: התג שמצרפים למערך הנתונים החדש. אם יש כמה תגים, הם מופרדים בפסיקים. לדוגמה, 556741164180/env:prod,myProject/department:sales. לכל תג צריך להיות שם מפתח במרחב השמות ושם מקוצר של ערך.
  • ‫PROJECT_ID: מזהה הפרויקט שבו יוצרים מערך נתונים.
  • ‫DATASET_ID: המזהה של מערך הנתונים החדש.

Terraform

משתמשים במשאב google_bigquery_dataset.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env2"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department2"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "my_dataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  # Attach tags to the dataset
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

API

מפעילים את השיטה datasets.insert ומוסיפים את התגים לשדה resource_tags.

הוספת תגים למערך נתונים קיים

אחרי שיוצרים תג, אפשר לצרף אותו למערך נתונים קיים. אפשר לצרף רק ערך תג אחד למערך נתונים לכל מפתח תג נתון.

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.

  4. בקטע Dataset info, לוחצים על Edit details.

  5. מרחיבים את הקטע Tags.

    1. כדי להחיל תג קיים, מבצעים את הפעולות הבאות:

      1. לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.

        אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.

      2. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

      1. לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization,‏ Project או Tags.

      2. אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של PROJECT_ID או של ORGANIZATION_ID ולוחצים על Save.

      3. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

  6. לוחצים על Save.

SQL

משתמשים בהצהרה ALTER SCHEMA SET OPTIONS.

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

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER SCHEMA PROJECT_ID.DATASET_ID
    SET OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: מזהה קבוצת הנתונים שמכילה את הטבלה.
    • ‫TABLE_ID: שם הטבלה שמתייגים.
    • ‫TAG_KEY_1: השם ממרחב השמות של המפתח שרוצים להגדיר בתור התג הראשון בטבלה, למשל 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של ערך התג, לדוגמה 'prod' או 'sales'.
    • TAG_KEY_2: שם המפתח ממרחב השמות של התג השני.
    • ‫TAG_VALUE_2: השם המקוצר של ערך התג השני.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

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

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER SCHEMA PROJECT_ID.DATASET_ID
    SET OPTIONS (
      tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: מזהה קבוצת הנתונים שמכילה את הטבלה.
    • ‫TABLE_ID: שם הטבלה שמתייגים.
    • ‫TAG_KEY_1: השם ממרחב השמות של המפתח שרוצים להגדיר בתור התג הראשון בטבלה, למשל 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של ערך התג, לדוגמה 'prod' או 'sales'.
    • TAG_KEY_2: שם המפתח ממרחב השמות של התג השני.
    • ‫TAG_VALUE_2: השם המקוצר של ערך התג השני.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

משתמשים בפקודה bq update עם הדגל --add_tags:

bq update \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID

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

  • ‫TAG: התג שמצרפים למערך הנתונים. אם יש כמה תגים, הם מופרדים בפסיקים. לדוגמה, 556741164180/env:prod,myProject/department:sales. לכל תג צריך להיות שם מפתח במרחב השמות ושם מקוצר של ערך.
  • ‫PROJECT_ID: מזהה הפרויקט שבו נמצא מערך הנתונים הקיים.
  • ‫DATASET_ID: המזהה של מערך הנתונים הקיים.

gcloud

כדי לצרף תג לקבוצת נתונים באמצעות שורת הפקודה, יוצרים משאב של קישור תגים באמצעות הפקודה gcloud resource-manager tags bindings create:

gcloud resource-manager tags bindings create \
    --tag-value=TAG_VALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

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

  • ‫TAG_VALUE_NAME: המזהה הקבוע או השם ממרחב השמות של ערך התג שרוצים לצרף, למשל tagValues/4567890123 או 1234567/my_tag_key/my_tag_value.
  • ‫RESOURCE_ID: המזהה המלא של קבוצת הנתונים, כולל שם הדומיין של ה-API‏ (//bigquery.googleapis.com/) כדי לזהות את סוג המשאב. לדוגמה, //bigquery.googleapis.com/projects/my_project/datasets/my_dataset.
  • ‫LOCATION: המיקום של מערך הנתונים.

Terraform

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

API

מפעילים את השיטה datasets.get כדי לקבל את משאב קבוצת הנתונים, כולל השדה resource_tags. מוסיפים את התגים לשדה resource_tags ומעבירים בחזרה את המשאב המעודכן של מערך הנתונים באמצעות ה-method‏ datasets.update.

הצגת רשימת התגים שמצורפים למערך נתונים

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.

    התגים מופיעים בקטע Dataset info.

BQ

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

bq show PROJECT_ID:DATASET_ID

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

  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את מערך הנתונים.
  • ‫DATASET_ID: המזהה של מערך הנתונים שרוצים להציג את התגים שלו.

gcloud

כדי לקבל רשימה של קישורי התגים שמצורפים למשאב, משתמשים בפקודה gcloud resource-manager tags bindings list:

gcloud resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=LOCATION

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

  • ‫RESOURCE_ID: המזהה המלא של מערך הנתונים, כולל שם הדומיין של ה-API‏ (//bigquery.googleapis.com/) כדי לזהות את סוג המשאב. לדוגמה: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset.

  • ‫LOCATION: המיקום של מערך הנתונים.

הפלט אמור להיראות כך:

name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123
parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset
tagValue: tagValues/4567890123

אפשר להציג את רשימת התגים שעברו בירושה למערכי הנתונים ב-BigQuery באמצעות gcloud resource-manager tags bindings list. אפשר גם להשתמש באפשרות --filter במאפיין namespacedTagValue כדי לסנן תגים לפי מזהה הפרויקט, ערך התג או מפתח התג.

gcloud resource-manager tags bindings list \
    --parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID \
    --effective \
    --filter=namespacedTagValue:TAG_FILTER

מחליפים את הערכים הבאים :

  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את מערך הנתונים.

  • ‫DATASET_ID: מזהה מערך הנתונים.

  • ‫TAG_FILTER: מציינים ערך לסינון תגים שעברו בירושה, על סמך אחת מהאפשרויות הבאות:

    • סינון תגים לפי מזהה פרויקט. לדוגמה, myproject.

    • כדי לסנן לפי ערכי תגים, מציינים את המזהה הקבוע או את השם של ערך התג במרחב השמות. לדוגמה, tagValues/4567890123 או 1234567/my_tag_key/my_tag_value.

    • כדי לסנן לפי מפתחות של תגים, מציינים את השם המוצג של מפתח התג. לדוגמה tagkey.

Terraform

משתמשים בפקודה terraform state show כדי להציג את המאפיינים של מערך הנתונים, כולל השדה resource_tags. מריצים את הפקודה הזו בספרייה שבה הופעל קובץ התצורה של Terraform של מערך הנתונים.

terraform state show google_bigquery_dataset.default

API

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

תצוגות

משתמשים בתצוגה INFORMATION_SCHEMA.SCHEMATA_OPTIONS.

לדוגמה, השאילתה הבאה מציגה את כל התגים שמצורפים לכל מערכי הנתונים באזור מסוים. השאילתה הזו מחזירה טבלה עם עמודות שכוללות את schema_name (שמות מערכי הנתונים), option_name (תמיד 'tags'), object_type (תמיד ARRAY<STRUCT<STRING, STRING>>) ו-option_value, שמכילה מערכים של אובייקטים מסוג STRUCT שמייצגים תגים שמשויכים לכל מערך נתונים. במערכי נתונים ללא תגים שהוקצו, העמודה option_value מחזירה מערך ריק.

SELECT * from region-REGION.INFORMATION_SCHEMA.SCHEMATA_OPTIONS
WHERE option_name='tags'

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

  • ‫REGION: האזור שבו נמצאים מערכי הנתונים.

ניתוק תגים מקבוצת נתונים

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.

  4. בקטע Dataset info, לוחצים על Edit details.

  5. בקטע Tags, לוחצים על Delete item ליד התג שרוצים למחוק.

  6. לוחצים על Save.

SQL

משתמשים בהצהרה ALTER SCHEMA SET OPTIONS.

בדוגמה הבאה מנותקים תגים ממערך נתונים באמצעות האופרטור -=. כדי לנתק את כל התגים מקבוצת נתונים, אפשר לציין את tags=NULL או את tags=[].

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: מזהה קבוצת הנתונים שמכילה את הטבלה.
    • ‫TABLE_ID: שם הטבלה שממנה מנתקים את התגים.
    • ‫TAG_KEY_1: שם המפתח ממרחב השמות של התג הראשון שרוצים לנתק, לדוגמה 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של הערך של התג שרוצים לנתק, לדוגמה 'prod' או 'sales'.
    • ‫TAG_KEY_2: השם ממרחב השמות של מפתח התג השני שרוצים לנתק.
    • ‫TAG_VALUE_2: השם המקוצר של הערך של התג השני שאתם מנתקים.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

משתמשים בפקודה bq update עם הדגל --remove_tags:

bq update \
    --remove_tags=REMOVED_TAG \
    PROJECT_ID:DATASET_ID

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

  • ‫REMOVED_TAG: התג שאתם מסירים ממערך הנתונים. אם יש כמה תגים, הם מופרדים בפסיקים. אפשר להזין רק מפתחות בלי צמדי ערכים. לדוגמה, 556741164180/env,myProject/department. לכל תג צריך להיות שם מפתח במרחב השמות.
  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את מערך הנתונים.
  • ‫DATASET_ID: המזהה של קבוצת הנתונים שממנו רוצים לנתק את התגים.

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

bq update \
    --clear_all_tags
    PROJECT_ID:DATASET_ID

gcloud

כדי לנתק תג מקבוצת נתונים באמצעות שורת הפקודה, מוחקים את קישור התג באמצעות הפקודה gcloud resource-manager tags bindings delete:

gcloud resource-manager tags bindings delete \
    --tag-value=TAG_VALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

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

  • ‫TAG_VALUE_NAME: המזהה הקבוע או השם במרחב השמות של ערך התג שרוצים לנתק, למשל tagValues/4567890123 או 1234567/my_tag_key/my_tag_value.
  • ‫RESOURCE_ID: המזהה המלא של מערך הנתונים, כולל שם הדומיין של ה-API‏ (//bigquery.googleapis.com/) כדי לזהות את סוג המשאב. לדוגמה: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset.
  • ‫LOCATION: המיקום של מערך הנתונים.

Terraform

מסירים את התגים מהשדה resource_tags של מערך הנתונים, ואז מחילים את ההגדרות המעודכנות באמצעות המשאב google_bigquery_dataset.

API

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

טבלאות תגים

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

הוספת תגים כשיוצרים טבלה חדשה

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.

  4. בקטע Dataset info, לוחצים על Create table.

  5. מזינים את המידע של הטבלה החדשה. איך יוצרים טבלאות ומשתמשים בהן

  6. מרחיבים את הקטע Tags.

    1. כדי להחיל תג קיים, מבצעים את הפעולות הבאות:

      1. לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.

        אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.

      2. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

      1. לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization,‏ Project או Tags.

      2. אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של PROJECT_ID או של ORGANIZATION_ID ולוחצים על Save.

      3. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

  7. לוחצים על Create table.

SQL

משתמשים בהצהרה CREATE TABLE.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: המזהה של מערך הנתונים שבו יוצרים את הטבלה.
    • ‫TABLE_ID: שם הטבלה החדשה.
    • ‫TAG_KEY_1: השם ממרחב השמות של המפתח שרוצים להגדיר בתור התג הראשון בטבלה, למשל 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של ערך התג, לדוגמה 'prod' או 'sales'.
    • TAG_KEY_2: שם המפתח ממרחב השמות של התג השני.
    • ‫TAG_VALUE_2: השם המקוצר של ערך התג השני.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

משתמשים בפקודה bq mk --table עם הדגל --add_tags:

bq mk --table \
    --schema=SCHEMA \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID.TABLE_ID

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

  • ‫SCHEMA: הגדרת הסכימה בתוך השורה.
  • ‫TAG: התג שאתם מצרפים לטבלה החדשה. אם יש כמה תגים, הם מופרדים בפסיקים. לדוגמה, 556741164180/env:prod,myProject/department:sales. לכל תג צריך להיות שם מפתח במרחב השמות ושם מקוצר של ערך.
  • ‫PROJECT_ID: מזהה הפרויקט שבו יוצרים טבלה.
  • ‫DATASET_ID: המזהה של מערך הנתונים שבו יוצרים טבלה.
  • ‫TABLE_ID: המזהה של הטבלה החדשה.

Terraform

משתמשים במשאב google_bigquery_table.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

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


# Create tag keys and values
data "google_project" "default" {}

resource "google_tags_tag_key" "env_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "env3"
}

resource "google_tags_tag_key" "department_tag_key" {
  parent     = "projects/${data.google_project.default.project_id}"
  short_name = "department3"
}

resource "google_tags_tag_value" "env_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.env_tag_key.name}"
  short_name = "prod"
}

resource "google_tags_tag_value" "department_tag_value" {
  parent     = "tagKeys/${google_tags_tag_key.department_tag_key.name}"
  short_name = "sales"
}

# Create a dataset
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "MyDataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days
}

# Create a table
resource "google_bigquery_table" "default" {
  dataset_id  = google_bigquery_dataset.default.dataset_id
  table_id    = "mytable"
  description = "table description"

  # Attach tags to the table
  resource_tags = {
    (google_tags_tag_key.env_tag_key.namespaced_name) : google_tags_tag_value.env_tag_value.short_name,
    (google_tags_tag_key.department_tag_key.namespaced_name) : google_tags_tag_value.department_tag_value.short_name
  }
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

API

מפעילים את ה-method‏ tables.insert עם משאב טבלה מוגדר. כוללים את התגים בשדה resource_tags.

הוספת תגים לטבלה קיימת

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.

  4. לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.

  5. בחלונית הפרטים, לוחצים על עריכה > עריכת הפרטים.

  6. מרחיבים את הקטע Tags.

    1. כדי להחיל תג קיים, מבצעים את הפעולות הבאות:

      1. לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.

        אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.

      2. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

      1. לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization,‏ Project או Tags.

      2. אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של PROJECT_ID או של ORGANIZATION_ID ולוחצים על Save.

      3. בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.

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

  7. לוחצים על Save.

SQL

משתמשים בהצהרה ALTER TABLE SET OPTIONS.

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

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags = [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: מזהה קבוצת הנתונים שמכילה את הטבלה.
    • ‫TABLE_ID: שם הטבלה שמתייגים.
    • ‫TAG_KEY_1: השם ממרחב השמות של המפתח שרוצים להגדיר בתור התג הראשון בטבלה, למשל 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של ערך התג, לדוגמה 'prod' או 'sales'.
    • TAG_KEY_2: שם המפתח ממרחב השמות של התג השני.
    • ‫TAG_VALUE_2: השם המקוצר של ערך התג השני.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

בדוגמה הבאה משתמשים באופרטור += כדי לצרף תג לטבלה בלי להחליף תגים קיימים. אם לתג קיים יש את אותו מפתח, התג הזה יוחלף.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags += [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: מזהה קבוצת הנתונים שמכילה את הטבלה.
    • ‫TABLE_ID: שם הטבלה שמתייגים.
    • ‫TAG_KEY_1: השם ממרחב השמות של המפתח שרוצים להגדיר בתור התג הראשון בטבלה, למשל 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של ערך התג, לדוגמה 'prod' או 'sales'.
    • TAG_KEY_2: שם המפתח ממרחב השמות של התג השני.
    • ‫TAG_VALUE_2: השם המקוצר של ערך התג השני.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

משתמשים בפקודה bq update עם הדגל --add_tags:

bq update \
    --add_tags=TAG \
    PROJECT_ID:DATASET_ID.TABLE_ID

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

  • ‫TAG: התג שמצרפים לטבלה. אם יש כמה תגים, הם מופרדים בפסיקים. לדוגמה, 556741164180/env:prod,myProject/department:sales. לכל תג צריך להיות שם מפתח במרחב השמות ושם מקוצר של ערך.
  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה.
  • ‫DATASET_ID: מזהה מערך הנתונים שמכיל את הטבלה.
  • ‫TABLE_ID: המזהה של הטבלה שמעדכנים.

gcloud

כדי לצרף תג לטבלה באמצעות שורת הפקודה, יוצרים משאב של קישור תגים באמצעות הפקודה gcloud resource-manager tags bindings create:

gcloud resource-manager tags bindings create \
    --tag-value=TAG_VALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

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

  • ‫TAG_VALUE_NAME: המזהה הקבוע או השם ממרחב השמות של ערך התג שרוצים לצרף, למשל tagValues/4567890123 או 1234567/my_tag_key/my_tag_value.
  • ‫RESOURCE_ID: המזהה המלא של הטבלה, כולל שם הדומיין של ה-API‏ (//bigquery.googleapis.com/) כדי לזהות את סוג המשאב. לדוגמה, //bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table
  • ‫LOCATION: המיקום של הטבלה.

Terraform

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

API

מפעילים את ה-method‏ tables.update עם משאב טבלה מוגדר. כוללים את התגים בשדה resource_tags.

הצגת רשימת התגים שמצורפים לטבלה

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.

  4. לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.

    התגים מופיעים בכרטיסייה פרטים.

BQ

משתמשים בפקודה bq show ומחפשים את העמודה tags. אם אין תגים בטבלה, העמודה tags לא מוצגת.

bq show \
    PROJECT_ID:DATASET_ID.TABLE_ID

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

  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה.
  • ‫DATASET_ID: מזהה מערך הנתונים שמכיל את הטבלה.
  • ‫TABLE_ID: מזהה הטבלה.

gcloud

כדי לקבל רשימה של קישורי התגים שמצורפים למשאב, משתמשים בפקודה gcloud resource-manager tags bindings list:

gcloud resource-manager tags bindings list \
    --parent=RESOURCE_ID \
    --location=LOCATION

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

  • ‫RESOURCE_ID: המזהה המלא של הטבלה, כולל שם הדומיין של ה-API‏ (//bigquery.googleapis.com/) כדי לזהות את סוג המשאב. לדוגמה: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.

  • ‫LOCATION: המיקום של מערך הנתונים.

הפלט אמור להיראות כך:

name: tagBindings/%2F%2Fbigquery.googleapis.com%2Fprojects%2Fmy_project%2Fdatasets%2Fmy_dataset/tagValues/4567890123
parent: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset
tagValue: tagValues/4567890123

אפשר להציג את התגים שעברו בירושה לטבלאות ב-BigQuery באמצעות gcloud resource-manager tags bindings list. אפשר גם להשתמש באפשרות --filter במאפיין namespacedTagValue כדי לסנן תגים לפי מזהה הפרויקט, ערך התג או מפתח התג.

gcloud resource-manager tags bindings list \
    --parent=//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID \
    --effective \
    --filter=namespacedTagValue:TAG_FILTER

מחליפים את הערכים הבאים :

  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את מערך הנתונים.

  • ‫DATASET_ID: מזהה מערך הנתונים.

  • ‫TAG_FILTER: מציינים ערך לסינון תגים שעברו בירושה, על סמך אחת מהאפשרויות הבאות:

    • סינון תגים לפי מזהה פרויקט. לדוגמה, myproject.

    • כדי לסנן לפי ערכי תגים, מציינים את המזהה הקבוע או את השם של ערך התג במרחב השמות. לדוגמה, tagValues/4567890123 או 1234567/my_tag_key/my_tag_value.

    • כדי לסנן לפי מפתחות של תגים, מציינים את השם המוצג של מפתח התג. לדוגמה tagkey.

Terraform

משתמשים בפקודה terraform state show כדי להציג את המאפיינים של הטבלה, כולל השדה resource_tags. מריצים את הפקודה הזו בספרייה שבה הופעל קובץ התצורה של Terraform של הטבלה.

terraform state show google_bigquery_table.default

API

מפעילים את ה-method‏ tables.get עם משאב טבלה מוגדר, ומחפשים את השדה resource_tags.

תצוגות

משתמשים בתצוגה INFORMATION_SCHEMA.TABLE_OPTIONS.

לדוגמה, השאילתה הבאה מציגה את כל התגים שמצורפים לכל הטבלאות במערך נתונים. השאילתה הזו מחזירה טבלה עם עמודות שכוללות את schema_name (שם מערך הנתונים), option_name (תמיד 'tags'), object_type (תמיד ARRAY<STRUCT<STRING, STRING>>) ו-option_value, שמכילה מערכים של אובייקטים מסוג STRUCT שמייצגים תגים שמשויכים לכל מערך נתונים. בטבלאות שלא הוקצו להן תגים, העמודה option_value מחזירה מערך ריק.

SELECT * from DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS
WHERE option_name='tags'

מחליפים את DATASET_ID במזהה של קבוצת הנתונים שמכילה את הטבלה.

ניתוק תגים מטבלה

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

  3. בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.

  4. לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.

  5. בחלונית הפרטים, לוחצים על עריכה > עריכת הפרטים.

  6. בקטע Tags, לוחצים על Delete item ליד התג שרוצים למחוק.

  7. לוחצים על Save.

SQL

משתמשים בהצהרה ALTER TABLE SET OPTIONS.

בדוגמה הבאה, התגים מנותקים מטבלה באמצעות האופרטור -=. כדי לנתק את כל התגים מטבלה, אפשר לציין את tags=NULL או את tags=[].

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מזינים את ההצהרה הבאה:

    ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
    SET OPTIONS (
      tags -= [('TAG_KEY_1', 'TAG_VALUE_1'), ('TAG_KEY_2', 'TAG_VALUE_2')];)

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

    • PROJECT_ID: מזהה הפרויקט.
    • ‫DATASET_ID: מזהה קבוצת הנתונים שמכילה את הטבלה.
    • ‫TABLE_ID: שם הטבלה שממנה מנתקים את התגים.
    • ‫TAG_KEY_1: שם המפתח ממרחב השמות של התג הראשון שרוצים לנתק, לדוגמה 'my-project/env' או '556741164180/department'.
    • ‫TAG_VALUE_1: השם המקוצר של הערך של התג שרוצים לנתק, לדוגמה 'prod' או 'sales'.
    • ‫TAG_KEY_2: השם ממרחב השמות של מפתח התג השני שרוצים לנתק.
    • ‫TAG_VALUE_2: השם המקוצר של הערך של התג השני שאתם מנתקים.

  3. ‫לוחצים על Run.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

כדי להסיר תגים מסוימים מטבלה, משתמשים בפקודה bq update עם הדגל --remove_tags:

bq update \
    --remove_tags=TAG_KEYS \
    PROJECT_ID:DATASET_ID.TABLE_ID

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

  • ‫TAG_KEYS: מפתחות התגים שאתם מנתקים מהטבלה, מופרדים בפסיקים. לדוגמה, 556741164180/env,myProject/department. לכל מפתח תג צריך להיות שם מפתח ממרחב השמות.
  • ‫PROJECT_ID: מזהה הפרויקט שמכיל את הטבלה.
  • ‫DATASET_ID: מזהה מערך הנתונים שמכיל את הטבלה.
  • ‫TABLE_ID: המזהה של הטבלה שמעדכנים.

כדי להסיר את כל התגים מטבלה, משתמשים בפקודה bq update עם הדגל --clear_all_tags:

bq update \
    --clear_all_tags \
    PROJECT_ID:DATASET_ID.TABLE_ID

gcloud

כדי להסיר שיוך של תג מטבלה באמצעות שורת הפקודה, מוחקים את קישור התג באמצעות הפקודה gcloud resource-manager tags bindings delete:

gcloud resource-manager tags bindings delete \
    --tag-value=TAG_VALUE_NAME \
    --parent=RESOURCE_ID \
    --location=LOCATION

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

  • ‫TAG_VALUE_NAME: המזהה הקבוע או השם במרחב השמות של ערך התג שרוצים למחוק, למשל tagValues/4567890123 או 1234567/my_tag_key/my_tag_value.
  • ‫RESOURCE_ID: המזהה המלא של הטבלה, כולל שם הדומיין של ה-API‏ (//bigquery.googleapis.com/) כדי לזהות את סוג המשאב. לדוגמה: //bigquery.googleapis.com/projects/my_project/datasets/my_dataset/tables/my_table.
  • ‫LOCATION: המיקום של מערך הנתונים.

Terraform

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

API

מפעילים את ה-method‏ tables.update עם משאב טבלה מוגדר, ומסירים את התגים בשדה resource_tags. כדי להסיר את כל התגים, מסירים את השדה resource_tags.

תיוג משאבים אחרים שדומים לטבלאות

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

עמודות של תגים

אתם יכולים לתייג עמודות בטבלה באמצעות תגי משילות מידע (data governance) כדי להגדיר בקרת גישה ברמת העמודה והסתרת נתונים.

מחיקת תגים

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

דוגמה

נניח שאתם אדמינים בארגון. כל מנתחי הנתונים שלכם חברים בקבוצה analysts@example.com, שיש לה את תפקיד ה-IAM "צפייה בנתונים ב-BigQuery" בפרויקט userData. מתמחה בניתוח נתונים מתקבל לעבודה, ובהתאם למדיניות החברה צריכה להיות לו רק הרשאה לצפות במערך הנתונים anonymousData בפרויקט userData. אתם יכולים לשלוט בגישה שלהם באמצעות תגים.

  1. יוצרים תג עם המפתח employee_type והערך intern:

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

  2. נכנסים לדף IAM במסוף Google Cloud .

    כניסה לדף IAM

  3. מוצאים את השורה של המתמחה שרוצים להגביל את הגישה שלו לקבוצת הנתונים, ולוחצים על Edit principal בשורה הזו.

  4. בתפריט Role, בוחרים באפשרות BigQuery Data Viewer.

  5. לוחצים על הוספת תנאי.

  6. בשדות Title ו-Description, מזינים ערכים שמתארים את התנאי של תג ה-IAM שרוצים ליצור.

  7. בכרטיסייה הכלי להגדרת תנאים, לוחצים על הוספה.

  8. בתפריט Condition type, בוחרים באפשרות Resource ואז באפשרות Tag.

  9. בתפריט אופרטור, בוחרים באפשרות יש ערך.

  10. בשדה Value path, מזינים את נתיב ערך התג בפורמט ORGANIZATION/TAG_KEY/TAG_VALUE. לדוגמה, example.org/employee_type/intern.

    דוגמה לתנאי IAM באמצעות תגים.

    תנאי תג ה-IAM הזה מגביל את הגישה של המתמחה למערכי נתונים עם התג intern.

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

  12. כדי לשמור את השינויים שביצעתם בחלונית Edit permissions, לוחצים על Save.

  13. כדי לצרף את ערך התג intern למערך הנתונים anonymousData, משתמשים בשורת הפקודה כדי להריץ את הפקודה gcloud resource-manager tags bindings create. לדוגמה:

    gcloud resource-manager tags bindings create \
        --tag-value=tagValues/4567890123 \
        --parent=//bigquery.googleapis.com/projects/userData/datasets/anonymousData \
        --location=US
    

שליטה בגישה לעמודות באמצעות תגי משילות מידע (data governance)

אתם יכולים לאכוף אבטחה ברמת העמודה ואנונימיזציה של נתונים ב-BigQuery באמצעות תגי משילות מידע (data governance). תגי משילות מידע הם סוג של תגי Resource Manager שאפשר לצרף לעמודות רגישות ולהשתמש בהם במדיניות הנתונים של BigQuery כדי לתת למשתמשים גישה מותנית.

להגדיר אבטחה ברמת העמודה על ידי יצירת תגי משילות מידע (data governance) והצמדה שלהם לעמודות ב-BigQuery. אחר כך יוצרים מדיניות נתונים של BigQuery Data Policy שמפנה לתגים האלה. כללי המדיניות האלה מחילים כללים להסתרת נתונים או מעניקים גישה לנתונים גולמיים למשתמשים ספציפיים, כדי להבטיח שרק חשבונות משתמש מורשים יוכלו לראות נתונים רגישים.

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

כדי ליצור ולנהל תגי משילות מידע במסוף Google Cloud , אתם יכולים להשתמש במרכז האבטחה של BigQuery.

לפני שמתחילים להשתמש בתגי משילות

  1. התקינו את ה-CLI של Google Cloud.

  2. הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

    איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

  3. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  4. כדי ליצור ולנהל תגי משילות מידע, צריך להשתמש בתמחור על פי דרישה או במהדורת BigQuery Enterprise או Enterprise Plus.

התפקידים הנדרשים לתגי משילות מידע (data governance)

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

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

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

יצירת תגי משילות מידע (data governance)

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

יצירת מפתח תג

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט של BigQuery, לוחצים על Governance ואז על Security center.

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

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

  5. בחלונית Create tag key, מציינים את פרטי מפתח התג:

    • בשדה Data governance tags name, מזינים שם למפתח התג.
    • אופציונלי: בשדה Description, מזינים תיאור למפתח התג.
  6. לוחצים על יצירה.

gcloud

  1. מריצים את הפקודה gcloud resource-manager tags keys create:

    gcloud resource-manager tags keys create TAG_KEY \
        --parent=projects/PROJECT_ID \
        --purpose=DATA_GOVERNANCE
    

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

    • ‫TAG_KEY: השם המקוצר של מפתח התג.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לציין ארגון במקום פרויקט, משתמשים ב-organizations/ORGANIZATION_ID במקום ב-projects/PROJECT_ID.

Terraform

כדי ליצור מפתח תג למשילות מידע, משתמשים במשאב google_tags_tag_key בספק google-beta ומגדירים את הארגומנט purpose לערך DATA_GOVERNANCE:

resource "google_tags_tag_key" "dg_key" {
  provider   = google-beta
  parent     = "projects/PROJECT_ID"
  short_name = "TAG_KEY"
  purpose    = "DATA_GOVERNANCE"
}

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

  • ‫TAG_KEY: השם המקוצר של מפתח התג.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לציין ארגון במקום פרויקט, משתמשים ב-organizations/ORGANIZATION_ID במקום ב-projects/PROJECT_ID.

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

API

  1. שולחים בקשת POST לנקודת הקצה (endpoint) של tagKeys:

    curl --request POST \
      "https://cloudresourcemanager.googleapis.com/v3/tagKeys" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header 'Accept: application/json' \
      --header 'Content-Type: application/json' \
      --data '{"shortName":"TAG_KEY","parent":"projects/PROJECT_ID","purpose":"DATA_GOVERNANCE"}' \
      --compressed
    

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

    • ‫TAG_KEY: השם המקוצר של מפתח התג.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לציין ארגון במקום פרויקט, משתמשים ב-organizations/ORGANIZATION_ID במקום ב-projects/PROJECT_ID.

יצירת ערך תג

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

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט של BigQuery, לוחצים על Governance ואז על Security center.

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

  4. ברשימת מפתחות התגים, מאתרים את מפתח התג שרוצים להוסיף לו ערך, לוחצים על more_vert Actions ואז על Add tag values.

  5. בחלונית Add tag values, מזינים שם קצר לערך התג.

  6. אופציונלי: בשדה Description, מזינים תיאור.

  7. לוחצים על Save.

gcloud

  1. כדי לקבל את השם ממרחב השמות של מפתח התג, מריצים את הפקודה gcloud resource-manager tags keys list:

    gcloud resource-manager tags keys list --parent=projects/PROJECT_ID
    
  2. יוצרים ערך חדש באמצעות הפקודה gcloud resource-manager tags values create:

    gcloud resource-manager tags values create TAG_VALUE \
        --parent=PROJECT_ID/TAG_KEY
    

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

    • ‫TAG_VALUE: שם מקוצר שצוין על ידי המשתמש לערך התג.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לספק ארגון במקום פרויקט, צריך להשתמש ב-ORGANIZATION_ID.

Terraform

כדי ליצור ערך תג, משתמשים במשאב google_tags_tag_value בספק google-beta:

resource "google_tags_tag_value" "dg_value" {
  provider   = google-beta
  parent     = "tagKeys/${google_tags_tag_key.dg_key.name}"
  short_name = "TAG_VALUE"
}

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

  • ‫TAG_VALUE: שם מקוצר שצוין על ידי המשתמש לערך התג.

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

API

  1. משיגים את השם ממרחב השמות של מפתח התג:

    curl --request GET \
        "https://cloudresourcemanager.googleapis.com/v3/tagKeys/namespaced?name=PROJECT_ID/TAG_KEY" \
        --header "Authorization: Bearer $(gcloud auth print-access-token)" \
        --header 'Accept: application/json'
    

    התשובה מכילה את השדה name, לדוגמה tagKeys/4567890123.

  2. שולחים בקשת POST לנקודת הקצה (endpoint) של tagValues עם שם מפתח התג:

    curl --request POST \
      "https://cloudresourcemanager.googleapis.com/v3/tagValues" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header 'Accept: application/json' \
      --header 'Content-Type: application/json' \
      --data '{"shortName":"TAG_VALUE","parent":"tagKeys/TAG_KEY_ID"}' \
      --compressed
    

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

    • ‫TAG_VALUE: שם מקוצר שצוין על ידי המשתמש לערך התג.
    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לספק ארגון במקום פרויקט, צריך להשתמש ב-ORGANIZATION_ID.
    • TAG_KEY_ID: השם ממרחב השמות של מפתח התג משלב 1. לדוגמה, אם השם של מפתח התג הוא tagKeys/4567890123, המזהה של מפתח התג הוא 4567890123.

יצירת ערכי תגים היררכיים

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

דיאגרמה של תהליך העבודה לבקרת גישה ברמת העמודה באמצעות תגי משילות מידע (data governance).

gcloud

כדי ליצור ערך תג צאצא, מריצים את הפקודה gcloud resource-manager tags values create ומציינים ערך תג הורה בדגל --parent:

gcloud resource-manager tags values create CHILD_TAG_VALUE \
--parent=PROJECT_ID/TAG_KEY/PARENT_TAG_VALUE

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

  • ‫CHILD_TAG_VALUE: השם המקוצר של ערך התג הצאצא שאתם יוצרים.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud . כדי לספק ארגון במקום פרויקט, צריך להשתמש ב-ORGANIZATION_ID.
  • ‫TAG_KEY: השם המקוצר של מפתח התג שהוא ההורה של ערך התג.
  • ‫PARENT_TAG_VALUE: השם המקוצר של ערך התג ההורה.

API

כדי ליצור ערך תג צאצא, משתמשים בשם המשאב של ערך התג של ההורה (לדוגמה, tagValues/123456789012) בשדה parent:

curl --request POST \
  "https://cloudresourcemanager.googleapis.com/v3/tagValues" \
  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"shortName":"CHILD_TAG_VALUE","parent":"tagValues/PARENT_TAG_VALUE_ID"}' \
  --compressed

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

  • ‫CHILD_TAG_VALUE: השם המקוצר של ערך התג הצאצא שאתם יוצרים.
  • ‫PARENT_TAG_VALUE_ID: המזהה המספרי של ערך התג ההורה.

הוספת תגי משילות מידע (data governance) לעמודות ב-BigQuery

מצרפים את תגי משילות המידע שיצרתם לעמודות ב-BigQuery שאתם רוצים להגן עליהן.

SQL

יצירת טבלה חדשה עם עמודה מתויגת

כדי לצרף תגי משילות מידע כשיוצרים טבלה, משתמשים בהצהרה CREATE TABLE. מציינים את התג באמצעות הגדרת האפשרות data_governance_tags בעמודה.

CREATE TABLE PROJECT_ID.DATASET_ID.TABLE_ID (
  COLUMN_NAME INT64 OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")])
);

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud . כדי לספק ארגון במקום פרויקט כהורה של התג, צריך להשתמש ב-ORGANIZATION_ID במקום זאת בפורמט של מפתח התג (ORGANIZATION_ID/TAG_KEY).
  • ‫DATASET_ID: המזהה של מערך הנתונים שבו נמצאת הטבלה.
  • ‫TABLE_ID: המזהה של הטבלה שיוצרים.
  • ‫COLUMN_NAME: שם העמודה שרוצים לתייג.
  • ‫TAG_KEY: מפתח התג שרוצים להחיל.
  • ‫TAG_VALUE: ערך התג שרוצים להחיל.

הוספת תג לטבלה קיימת

כדי לצרף תגי משילות מידע לעמודה בטבלה קיימת, משתמשים בהצהרה ALTER TABLE כדי להגדיר את האפשרות data_governance_tags בעמודה.

ALTER TABLE PROJECT_ID.DATASET_ID.TABLE_ID
ALTER COLUMN COLUMN_NAME SET OPTIONS (data_governance_tags=[("PROJECT_ID/TAG_KEY", "TAG_VALUE")]);

‫CLI של bq

יצירת טבלה חדשה עם עמודה מתויגת

  1. כדי ליצור קובץ סכימת JSON מקומי שמגדיר את התג, מריצים את הפקודה bq mk:

    bq mk \
        --table \
        --project_id=PROJECT_ID \
        --description="description of my table" \
        --schema=SCHEMA_FILE.json \
        DATASET_ID.TABLE_ID
    

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

    • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לספק ארגון במקום פרויקט כהורה של התג, צריך להשתמש ב-ORGANIZATION_ID במקום זאת בפורמט של מפתח התג (ORGANIZATION_ID/TAG_KEY).
    • ‫DATASET_ID: המזהה של מערך הנתונים שבו נמצאת הטבלה.
    • ‫TABLE_ID: המזהה של הטבלה שאתם יוצרים.

הוספת תג לטבלה קיימת

  1. כדי להוסיף תג לטבלה קיימת, קודם מייצאים את הסכימה שלה לקובץ מקומי:

    bq show \
        --project_id=PROJECT_ID \
        --schema \
        --format=prettyjson \
        DATASET_ID.TABLE_ID > SCHEMA_FILE.json
    
  2. עורכים את קובץ הסכימה כדי להוסיף את האובייקט dataGovernanceTagsInfo לעמודה. לדוגמה:

    [
      {
        "description": "my sensitive column",
        "mode": "NULLABLE",
        "name": "Column_X",
        "type": "INT64",
        "dataGovernanceTagsInfo": {
          "dataGovernanceTags": {
            "PROJECT_ID/TAG_KEY": "TAG_VALUE"
          }
        }
      },
      {
        "mode": "REQUIRED",
        "name": "column2",
        "type": "FLOAT"
      }
    ]
    
  3. מעדכנים את הטבלה כדי לצרף תגים לעמודה הרגישה באמצעות הפקודה bq update:

    bq update \
        --project_id=PROJECT_ID \
        --schema=SCHEMA_FILE.json \
        DATASET_ID.TABLE_ID
    

    אפשר גם להשתמש בפקודה bq update כדי להסיר תגים קיימים ולצרף תגים חדשים.

Terraform

יצירת טבלה חדשה עם עמודה מתויגת

כדי לצרף תגי משילות מידע לעמודה כשיוצרים טבלה, משתמשים במשאב google_bigquery_table בספק google-beta. מגדירים את האובייקט dataGovernanceTagsInfo בתוך הגדרת הסכימה של העמודה.

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

resource "google_bigquery_table" "table" {
  provider   = google-beta
  dataset_id = "DATASET_ID"
  table_id   = "TABLE_ID"
  schema     = <<EOF
[
{
"name": "COLUMN_NAME",
"type": "STRING",
"mode": "NULLABLE",
"dataGovernanceTagsInfo": {
  "dataGovernanceTags": {
    "PROJECT_ID/TAG_KEY": "TAG_VALUE"
  }
}
}
]
EOF
  deletion_protection = false
}

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

  • ‫DATASET_ID: המזהה של מערך הנתונים שבו נמצאת הטבלה.
  • ‫TABLE_ID: המזהה של הטבלה שאתם יוצרים.
  • ‫COLUMN_NAME: שם העמודה שרוצים לתייג.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud . כדי לספק ארגון במקום פרויקט כהורה של התג, צריך להשתמש ב-ORGANIZATION_ID במקום זאת בפורמט של מפתח התג (ORGANIZATION_ID/TAG_KEY).
  • ‫TAG_KEY: השם המקוצר של מפתח התג.
  • ‫TAG_VALUE: השם המקוצר של ערך התג שרוצים לצרף.

הוספת תג לטבלה קיימת

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

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

API

יצירת טבלה חדשה עם עמודה מתויגת

משתמשים ב-method‏ tables.insert. כוללים את השדה dataGovernanceTagsInfo בגוף הבקשה.

```json
{
  "schema": {
    "fields": [
      {
        "name": "Column_X",
        "type": "INT64",
        "description": "sensitive column",
        "dataGovernanceTagsInfo": {
          "dataGovernanceTags": {
            "PROJECT_ID/TAG_KEY": "TAG_VALUE"
          }
        }
      }
    ]
  }
}
```

הוספת תג לטבלה קיימת

  1. מאחזרים את משאב הטבלה הנוכחי באמצעות השיטה tables.get.

  2. משנים את משאב הטבלה כך שיכלול את השדה dataGovernanceTagsInfo בעמודת היעד.

  3. מפעילים את השיטה tables.update או tables.patch עם משאב הטבלה המעודכן.

יצירה וניהול של מדיניות נתונים

ליצור ולנהל כללי מדיניות נתונים ב-BigQuery שמפנים לתגי משילות מידע (data governance) כדי להחיל כללי הסתרה או כללי מדיניות גישה לנתונים גולמיים.

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

יצירת מדיניות נתונים

Terraform

כדי ליצור מדיניות נתונים שמפנה לתג של משילות מידע, משתמשים במשאב google_bigquery_datapolicyv2_data_policy בספק google-beta. מציינים את הבלוק data_governance_tag כדי לקשר את המדיניות למפתח ולערך של תג משילות מידע (data governance).

יצירת מדיניות נתונים עם כלל הסתרה מוגדר מראש של SHA256

בדוגמה הבאה נוצרת מדיניות הסתרת נתונים שמשתמשת בשגרת הסתרה מוגדרת מראש של SHA256:

resource "google_bigquery_datapolicyv2_data_policy" "mask_policy" {
  provider         = google-beta
  location         = "LOCATION"
  data_policy_type = "DATA_MASKING_POLICY"
  data_policy_id   = "POLICY_ID"
  data_masking_policy {
    predefined_expression = "SHA256"
  }
  data_governance_tag {
    key   = "PROJECT_ID/TAG_KEY"
    value = "TAG_VALUE"
  }
  grantees = [
    "principal://goog/subject/EMAIL_ADDRESS"
  ]
}

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

  • ‫LOCATION: האזור שבו יוצרים את מדיניות הנתונים. מידע נוסף זמין במאמר מיקומים.
  • ‫POLICY_ID: המזהה של מדיניות הנתונים.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud . כדי להגדיר ארגון במקום פרויקט כהורה של התג, משתמשים ב-ORGANIZATION_ID במקום בפורמט key (ORGANIZATION_ID/TAG_KEY).
  • ‫TAG_KEY: השם המקוצר של מפתח התג.
  • ‫TAG_VALUE: השם המקוצר של ערך התג.
  • ‫EMAIL_ADDRESS: כתובת האימייל של המשתמש או של חשבון השירות שרוצים לתת להם גישה.
יצירת מדיניות גישה לנתונים גולמיים

כדי ליצור מדיניות גישה לנתונים גולמיים, מגדירים את data_policy_type לערך RAW_DATA_ACCESS_POLICY:

resource "google_bigquery_datapolicyv2_data_policy" "raw_policy" {
  provider         = google-beta
  location         = "LOCATION"
  data_policy_type = "RAW_DATA_ACCESS_POLICY"
  data_policy_id   = "POLICY_ID"
  data_governance_tag {
    key   = "PROJECT_ID/TAG_KEY"
    value = "TAG_VALUE"
  }
  grantees = [
    "principal://goog/subject/EMAIL_ADDRESS"
  ]
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

API

יוצרים מדיניות נתונים שמשתמשת בכלל הסתרה מוגדר מראש של SHA256, או יוצרים מדיניות גישה לנתונים גולמיים.

יצירת מדיניות נתונים עם כלל הסתרה מוגדר מראש של SHA256

כדי ליצור מדיניות נתונים עם כלל הסתרה מוגדר מראש של SHA256, שולחים בקשת POST לנקודת הקצה (endpoint) של dataPolicies:

curl --request POST \
    "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
    --header "Authorization: Bearer $(gcloud auth print-access-token)" \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --data '{"dataPolicy":{"dataPolicyType":"DATA_MASKING_POLICY","dataMaskingPolicy":{"predefinedExpression":"SHA256"},"grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
    --compressed

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud. כדי לספק ארגון במקום פרויקט כהורה של התג, משתמשים ב-ORGANIZATION_ID במקום בפורמט dataGovernanceTag.key (ORGANIZATION_ID/TAG_KEY).
  • ‫LOCATION: האזור שבו יוצרים את מדיניות הנתונים. מידע נוסף זמין במאמר מיקומים.
  • ‫EMAIL_ADDRESS: כתובת האימייל של המשתמש שרוצים לתת לו גישה.
  • ‫TAG_KEY: השם המקוצר של מפתח התג.
  • ‫TAG_VALUE: שם מקוצר שצוין על ידי המשתמש לערך התג.
  • ‫POLICY_ID: המזהה של מדיניות הנתונים.
יצירת מדיניות גישה לנתונים גולמיים

כדי ליצור מדיניות גישה לנתונים גולמיים, מגדירים את dataPolicyType לערך RAW_DATA_ACCESS_POLICY:

curl --request POST \
    "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies" \
    --header "Authorization: Bearer $(gcloud auth print-access-token)" \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --data '{"dataPolicy":{"dataPolicyType":"RAW_DATA_ACCESS_POLICY","grantees": ["principal://goog/subject/EMAIL_ADDRESS"],"dataGovernanceTag":{"key":"PROJECT_ID/TAG_KEY","value":"TAG_VALUE"}},"dataPolicyId":"POLICY_ID"}' \
    --compressed

עדכון מדיניות הנתונים

לעדכן מדיניות נתונים קיימת כדי לתת גישה למשתמשים נוספים.

API

  1. כדי להוסיף משתמשים באמצעות עדכון ישיר של מדיניות, קודם צריך לקבל את המדיניות הנוכחית ואת ה-etag שלה:

    curl --request GET \
        "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \
        --header "Authorization: Bearer $(gcloud auth print-access-token)" \
        --header 'Accept: application/json' \
        --header 'Content-Type: application/json' \
        --compressed
    
  2. שולחים בקשת PATCH עם הרשימה המעודכנת של מקבלי המענק ועם הערך של etag מהשלב הקודם:

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"],
        "etag": "ETAG"
      }'  \
    "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID?updateMask=grantees"
    

    מחליפים את ETAG בערך של etag שהוחזר על ידי הבקשה GET בשלב הקודם.

    לחלופין, אפשר להשתמש בשיטה addGrantees כדי להוסיף משתמשים למדיניות:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"]
      }'  \
    "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:addGrantees"
    
  3. כדי להסיר משתמשים ממדיניות, משתמשים ב-method ‏removeGrantees:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "grantees": ["principal://goog/subject/user1@example.com","principal://iam.googleapis.com/projects/-/serviceAccounts/SA_EMAIL_ADDRESS"]
      }'  \
    "https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID:removeGrantees"
    

מחיקת מדיניות נתונים

API

כדי למחוק מדיניות נתונים, שולחים בקשת DELETE לנקודת הקצה dataPolicies:

curl --request DELETE \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies/POLICY_ID" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed

הצגת רשימה של כללי מדיניות הנתונים

API

כדי להציג רשימה של כללי מדיניות נתונים שמפנים למפתח תג, שולחים בקשת GET לנקודת הקצה (endpoint) של dataPolicies עם פרמטר filter:

curl --request GET \
"https://bigquerydatapolicy.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dataPolicies?filter=dataGovernanceTag:PROJECT_ID/TAG_KEY" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--compressed

אינטראקציות עם תכונות אחרות

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

תכונה אינטראקציה
סכימת מידע תגי משילות מידע שמצורפים לעמודות נכללים בתצוגות INFORMATION_SCHEMA.COLUMNS ו-INFORMATION_SCHEMA.COLUMN_FIELD_PATHS.
העתקת הטבלה אי אפשר להעתיק טבלאות בין אזורים אם יש להן אמצעי אבטחה ברמת העמודה, כולל טבלאות עם תגי משילות מידע (data governance).
מסע בזמן הגישה לנתונים היסטוריים בטבלה כפופה לכללי מדיניות הגישה והתגים שמצורפים לטבלה.

הגדרת פרויקט ברירת מחדל למדיניות נתונים

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

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

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

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

מגבלות של תגי משילות מידע (data governance)

  • בטבלאות BigQuery Omni אין תמיכה בתגי משילות מידע (data governance) בעמודות.
  • אתם יכולים להשתמש במסוף Google Cloud כדי לראות את תגי משילות המידע בעמודות, אבל לא כדי לקשר או לבטל את הקישור שלהם.
  • אפשר לקשר תג אחד לכל עמודה ועד 1,000 תגים ייחודיים לכל טבלה.
  • אם תשלחו שאילתה לעמודה מתויגת באמצעות BigQuery Storage Read API, קריאות ל-tabledata.list או טבלאות עם תווים כלליים לחיפוש, תקבלו הודעת שגיאה על דחיית הגישה, אלא אם מדיניות הנתונים נותנת לכם גישה.
  • בשדות מסוג STRUCT, אפשר להחיל תגי משילות מידע רק על שדות העלה.
  • אתם יכולים למחוק ערכי תגים שמצורפים לעמודות. אם מוחקים ערך של תג, הקישור של התג נשאר בעמודה, אבל בגלל שערך התג כבר לא קיים, יכול להיות שהגישה לעמודה תאבד.

פתרון בעיות בתגי משילות מידע (data governance)

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

שמות תגים בפורמט שגוי

כשיוצרים תגים, מגדירים שם מקוצר (לדוגמה, ssn). עם זאת, כשמצרפים תגים לעמודות בסכימה או משתמשים בהם בתנאים, מפתח התג חייב להשתמש בפורמט של מרחב השמות (PROJECT_ID/TAG_KEY או ORGANIZATION_ID/TAG_KEY), בעוד שערך התג עדיין משתמש בשם המקוצר. אם תציינו רק את השם המקוצר של מפתח התג, תופיע השגיאה Invalid tagKey או Invalid tagValue.

החלת מדיניות על כמה פרויקטים

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

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