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

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

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

אפשר לצרף תגים ישירות למשאב, או שניתן לקבל אותם בירושה ממשאבי הורה ב Google Cloud היררכיית המשאבים.

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

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

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

מגבלות

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

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

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

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

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

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

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

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

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

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

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

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

פעולה ממשקי BigQuery‏ (API, ‏ CLI, ‏ Console) ו-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, לוחצים על שם מערך הנתונים ואז על עריכת הפרטים, או לוחצים על שם הטבלה או התצוגה ואז על פרטים > עריכת הפרטים.

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

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

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

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

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

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

תיוג מערכי נתונים

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

צירוף תגים כשיוצרים מערך נתונים חדש

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

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

  4. לוחצים על View actions (הצגת פעולות) > Create dataset (יצירת מערך נתונים).

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

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

    1. כדי להחיל תג קיים:

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

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

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

    2. כדי להזין תג חדש באופן ידני:

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

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

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

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

  7. לוחצים על יצירת מערך נתונים.

SQL

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud

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

    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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

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

    1. כדי להחיל תג קיים:

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

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

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

    2. כדי להזין תג חדש באופן ידני:

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

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

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

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

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

SQL

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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 ומעבירים בחזרה את משאב מערך הנתונים המעודכן באמצעות השיטה datasets.update.

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

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

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

  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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

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

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

SQL

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

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

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

    1. כדי להחיל תג קיים:

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

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

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

    2. כדי להזין תג חדש באופן ידני:

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

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

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

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

  7. לוחצים על יצירת טבלה.

SQL

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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. מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud

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

    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

מבצעים קריאה ל-tables.insert עם משאב טבלה מוגדר. מוסיפים את התגים בשדה resource_tags.

צירוף תגים לטבלה קיימת

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

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

  5. לוחצים על הכרטיסייה פרטים ואז על עריכת הפרטים.

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

    1. כדי להחיל תג קיים:

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

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

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

    2. כדי להזין תג חדש באופן ידני:

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

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

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

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

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

SQL

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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

מבצעים קריאה ל-tables.update עם משאב טבלה מוגדר. מוסיפים את התגים בשדה resource_tags.

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

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

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

  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

מבצעים קריאה ל-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. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

  5. לוחצים על הכרטיסייה פרטים ואז על עריכת הפרטים.

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

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

SQL

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

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

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-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. לוחצים על הפעלה.

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

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, שיש לה תפקיד BigQuery Data Viewer IAM בפרויקט userData. חברה מעסיקה מתמחה בתחום ניתוח הנתונים, ולפי המדיניות של החברה, למתמחה צריכה להיות הרשאה רק לצפייה במערך הנתונים anonymousData בפרויקט userData. אתם יכולים לשלוט בגישה שלהם באמצעות תגים.

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

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

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

    כניסה לדף IAM

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

  4. בתפריט תפקיד, בוחרים באפשרות מציג נתונים ב-BigQuery.

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

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

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

  8. בתפריט Condition type (סוג התנאי), בוחרים באפשרות Resource (משאב) ואז באפשרות Tag (תג).

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

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

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

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

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

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

  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
    

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

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

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

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

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

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

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

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

    gcloud init
  4. כדי ליצור ולנהל תגי משילות מידע, צריך להשתמש ב-BigQuery Enterprise edition.

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

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

  • יוצרים תגי ניהול נתונים:
  • מצרפים או מסירים תגים לעמודות:
    • BigQuery Data Owner (roles/bigquery.dataOwner) בטבלה
    • Tag User (roles/resourcemanager.tagUser) בארגון, בפרויקט או בערך התג
  • יצירה וניהול של מדיניות נתונים: BigQuery Admin (roles/bigquerydatapolicy.admin) בפרויקט

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

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

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

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

יצירת מפתח תג

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

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.

API

  1. שליחת בקשת POST לנקודת הקצה 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.

יצירת ערך תג

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

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.

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 לנקודת הקצה 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")]);

bq CLI

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

  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 כדי להסיר תגים קיימים ולצרף תגים חדשים.

API

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

משתמשים בשיטה 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 שמפנה לתגי ניהול נתונים כדי להחיל כללי מיסוך או מדיניות גישה לנתונים גולמיים.

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

יצירת מדיניות בנושא נתונים

API

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

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

כדי ליצור מדיניות נתונים עם SHA256 כלל מוגדר מראש למסכות, שולחים בקשת POST לנקודת הקצה 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 לנקודת הקצה 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

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

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

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

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

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

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

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

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

המגבלות של תגי משילות מידע

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

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

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

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

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

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

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

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