שליטה בגישה באמצעות תגים
הוספת תגים למשאבים ב-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 |
|---|---|---|
| צירוף תג לטבלה או לתצוגה |
|
|
| הסרת תג מטבלה או מתצוגה |
|
|
| צירוף תג לקבוצת נתונים |
|
|
| הסרת תג מקבוצת נתונים |
|
|
כדי להציג רשימה של מפתחות תגים וערכי מפתחות במסוף 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 תגים לקבוצת נתונים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, בוחרים את הפרויקט שבו רוצים ליצור את מערך הנתונים.
לוחצים על View actions > Create dataset.
מזינים את המידע של קבוצת הנתונים החדשה. מידע נוסף מופיע בקטע יצירת מערכי נתונים.
מרחיבים את הקטע Tags.
כדי להחיל תג קיים, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.
אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.
בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
כדי להזין תג חדש באופן ידני, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization, Project או Tags.
אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של
PROJECT_IDאו שלORGANIZATION_IDולוחצים על Save.בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
אופציונלי: כדי להוסיף עוד תגים לטבלה, לוחצים על Add tag וחוזרים על השלבים הקודמים.
לוחצים על Create dataset.
SQL
משתמשים בהצהרה CREATE SCHEMA.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של ערך התג השני.
לוחצים על 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:
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
API
מפעילים את השיטה datasets.insert ומוסיפים את התגים לשדה resource_tags.
הוספת תגים למערך נתונים קיים
אחרי שיוצרים תג, אפשר לצרף אותו למערך נתונים קיים. אפשר לצרף רק ערך תג אחד למערך נתונים לכל מפתח תג נתון.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.
בקטע Dataset info, לוחצים על Edit details.
מרחיבים את הקטע Tags.
כדי להחיל תג קיים, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.
אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.
בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
כדי להזין תג חדש באופן ידני, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization, Project או Tags.
אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של
PROJECT_IDאו שלORGANIZATION_IDולוחצים על Save.בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
אופציונלי: כדי להוסיף עוד תגים לטבלה, לוחצים על Add tag וחוזרים על השלבים הקודמים.
לוחצים על Save.
SQL
משתמשים בהצהרה ALTER SCHEMA SET OPTIONS.
בדוגמה הבאה, כל התגים של מערך נתונים קיים מוחלפים.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של ערך התג השני.
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
בדוגמה הבאה משתמשים באופרטור += כדי לצרף תגים לקבוצת נתונים בלי להחליף תגים קיימים. אם לתג קיים יש את אותו מפתח, התג הזה יוחלף.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של ערך התג השני.
לוחצים על 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.
הצגת רשימת התגים שמצורפים למערך נתונים
בשלבים הבאים מופיעה רשימה של קישורי תגים שמצורפים ישירות למערך נתונים. השיטות האלה לא מחזירות תגים שעוברים בירושה ממשאבי הורה.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית 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: האזור שבו נמצאים מערכי הנתונים.
ניתוק תגים מקבוצת נתונים
כדי לנתק תג ממשאב, צריך למחוק את המשאב של קישור התג. אם אתם מוחקים תג, אתם צריכים לנתק אותו מקבוצת הנתונים לפני המחיקה. מידע נוסף זמין במאמר מחיקת תגים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.
בקטע Dataset info, לוחצים על Edit details.
בקטע Tags, לוחצים על Delete item ליד התג שרוצים למחוק.
לוחצים על Save.
SQL
משתמשים בהצהרה ALTER SCHEMA SET OPTIONS.
בדוגמה הבאה מנותקים תגים ממערך נתונים באמצעות האופרטור -=. כדי לנתק את כל התגים מקבוצת נתונים, אפשר לציין את tags=NULL או את tags=[].
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של הערך של התג השני שאתם מנתקים.
לוחצים על 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 תגים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים קבוצת נתונים.
בקטע Dataset info, לוחצים על Create table.
מזינים את המידע של הטבלה החדשה. איך יוצרים טבלאות ומשתמשים בהן
מרחיבים את הקטע Tags.
כדי להחיל תג קיים, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.
אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.
בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
כדי להזין תג חדש באופן ידני, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization, Project או Tags.
אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של
PROJECT_IDאו שלORGANIZATION_IDולוחצים על Save.בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
אופציונלי: כדי להוסיף עוד תגים לטבלה, לוחצים על Add tag וחוזרים על השלבים הקודמים.
לוחצים על Create table.
SQL
משתמשים בהצהרה CREATE TABLE.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של ערך התג השני.
לוחצים על 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:
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
API
מפעילים את ה-method tables.insert עם משאב טבלה מוגדר.
כוללים את התגים בשדה resource_tags.
הוספת תגים לטבלה קיימת
אחרי שיוצרים תג, אפשר לצרף אותו לטבלה קיימת. אפשר לצרף לטבלה רק ערך תג אחד לכל מפתח תג נתון.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.
בחלונית הפרטים, לוחצים על עריכה > עריכת הפרטים.
מרחיבים את הקטע Tags.
כדי להחיל תג קיים, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select scope ובוחרים באפשרות Current scope – Select current organization או Select current project.
אפשר גם ללחוץ על Select scope כדי לחפש משאב או כדי לראות רשימה של המשאבים הנוכחיים.
בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
כדי להזין תג חדש באופן ידני, מבצעים את הפעולות הבאות:
לוחצים על החץ לתפריט הנפתח לצד Select a scope ובוחרים באפשרות Manually enter IDs > Organization, Project או Tags.
אם יוצרים תג לפרויקט או לארגון, מזינים בתיבת הדו-שיח את הערך של
PROJECT_IDאו שלORGANIZATION_IDולוחצים על Save.בוחרים את הערכים המתאימים מהרשימות של Key 1 ו-Value 1.
אופציונלי: כדי להוסיף עוד תגים לטבלה, לוחצים על Add tag וחוזרים על השלבים הקודמים.
לוחצים על Save.
SQL
משתמשים בהצהרה ALTER TABLE SET OPTIONS.
בדוגמה הבאה, כל התגים של טבלה קיימת מוחלפים.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של ערך התג השני.
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
בדוגמה הבאה משתמשים באופרטור += כדי לצרף תג לטבלה בלי להחליף תגים קיימים. אם לתג קיים יש את אותו מפתח, התג הזה יוחלף.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של ערך התג השני.
לוחצים על 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.
הצגת רשימת התגים שמצורפים לטבלה
אתם יכולים להציג רשימה של תגים שמצורפים ישירות לטבלה. בתהליך הזה לא מופיעים תגים שעוברים בירושה ממשאבי הורה.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.
התגים מופיעים בכרטיסייה פרטים.
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 במזהה של קבוצת הנתונים שמכילה את הטבלה.
ניתוק תגים מטבלה
כדי להסיר שיוך של תג מטבלה, צריך למחוק את קישור התג. אם אתם מוחקים תג, אתם צריכים לנתק אותו מהטבלה לפני המחיקה. מידע נוסף זמין במאמר מחיקת תגים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

בחלונית Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
לוחצים על סקירה כללית > טבלאות ובוחרים טבלה.
בחלונית הפרטים, לוחצים על עריכה > עריכת הפרטים.
בקטע Tags, לוחצים על Delete item ליד התג שרוצים למחוק.
לוחצים על Save.
SQL
משתמשים בהצהרה ALTER TABLE SET OPTIONS.
בדוגמה הבאה, התגים מנותקים מטבלה באמצעות האופרטור -=. כדי לנתק את כל התגים מטבלה, אפשר לציין את tags=NULL או את tags=[].
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
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: השם המקוצר של הערך של התג השני שאתם מנתקים.
לוחצים על 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.
אתם יכולים לשלוט בגישה שלהם באמצעות תגים.
יוצרים תג עם המפתח
employee_typeוהערךintern:
נכנסים לדף IAM במסוף Google Cloud .
מוצאים את השורה של המתמחה שרוצים להגביל את הגישה שלו לקבוצת הנתונים, ולוחצים על Edit principal בשורה הזו.
בתפריט Role, בוחרים באפשרות BigQuery Data Viewer.
לוחצים על הוספת תנאי.
בשדות Title ו-Description, מזינים ערכים שמתארים את התנאי של תג ה-IAM שרוצים ליצור.
בכרטיסייה הכלי להגדרת תנאים, לוחצים על הוספה.
בתפריט Condition type, בוחרים באפשרות Resource ואז באפשרות Tag.
בתפריט אופרטור, בוחרים באפשרות יש ערך.
בשדה Value path, מזינים את נתיב ערך התג בפורמט
ORGANIZATION/TAG_KEY/TAG_VALUE. לדוגמה,example.org/employee_type/intern.
תנאי תג ה-IAM הזה מגביל את הגישה של המתמחה למערכי נתונים עם התג
intern.כדי לשמור את התנאי של התג, לוחצים על שמירה.
כדי לשמור את השינויים שביצעתם בחלונית Edit permissions, לוחצים על Save.
כדי לצרף את ערך התג
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.
לפני שמתחילים להשתמש בתגי משילות
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - כדי ליצור ולנהל תגי משילות מידע, צריך להשתמש בתמחור על פי דרישה או במהדורת BigQuery Enterprise או Enterprise Plus.
התפקידים הנדרשים לתגי משילות מידע (data governance)
כדי לקבל את ההרשאות שדרושות לשליטה בגישה לעמודות באמצעות תגי משילות מידע, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
-
יוצרים תגי משילות מידע:
- Tag Administrator (
roles/resourcemanager.tagAdmin) בפרויקט או בארגון - צפייה בארגון (
roles/resourcemanager.organizationViewer) בארגון
- Tag Administrator (
-
מצרפים תגים לעמודות או מסירים אותם:
- BigQuery Data Owner (
roles/bigquery.dataOwner) בטבלה - משתמש בתגים (
roles/resourcemanager.tagUser) בארגון, בפרויקט או בערך התג
- BigQuery Data Owner (
-
יצירה וניהול של מדיניות נתונים:
אדמין של מדיניות נתונים ב-BigQuery (
roles/bigquerydatapolicy.admin) בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת תגי משילות מידע (data governance)
יוצרים את מפתח התג של משילות המידע ואת הערכים שלו.
יצירת מפתח תג
כדי ליצור מפתח לתג של משילות מידע, מגדירים את השדה purpose לערך DATA_GOVERNANCE כשיוצרים את מפתח התג. הגדרת המטרה הזו מסווגת את התג לאבטחה ברמת העמודה או לאנונימיזציה של נתונים, ומבדילה אותו מתגי משאבים כלליים ב-BigQuery.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט של BigQuery, לוחצים על Governance ואז על Security center.
לוחצים על הכרטיסייה תגי משילות מידע.
לוחצים על יצירה.
בחלונית Create tag key, מציינים את פרטי מפתח התג:
- בשדה Data governance tags name, מזינים שם למפתח התג.
- אופציונלי: בשדה Description, מזינים תיאור למפתח התג.
לוחצים על יצירה.
gcloud
מריצים את הפקודה
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
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
API
שולחים בקשת
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.
-
יצירת ערך תג
כדי להוסיף ערך אחד או יותר למפתח תג, מבצעים את השלבים הבאים.
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט של BigQuery, לוחצים על Governance ואז על Security center.
לוחצים על הכרטיסייה תגי משילות מידע.
ברשימת מפתחות התגים, מאתרים את מפתח התג שרוצים להוסיף לו ערך, לוחצים על more_vert Actions ואז על Add tag values.
בחלונית Add tag values, מזינים שם קצר לערך התג.
אופציונלי: בשדה Description, מזינים תיאור.
לוחצים על Save.
gcloud
כדי לקבל את השם ממרחב השמות של מפתח התג, מריצים את הפקודה
gcloud resource-manager tags keys list:gcloud resource-manager tags keys list --parent=projects/PROJECT_IDיוצרים ערך חדש באמצעות הפקודה
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
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
API
משיגים את השם ממרחב השמות של מפתח התג:
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.שולחים בקשת
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 רמות, כמו שמוצג בתרשים הבא:
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
יצירת טבלה חדשה עם עמודה מתויגת
כדי ליצור קובץ סכימת 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: המזהה של הטבלה שאתם יוצרים.
-
הוספת תג לטבלה קיימת
כדי להוסיף תג לטבלה קיימת, קודם מייצאים את הסכימה שלה לקובץ מקומי:
bq show \ --project_id=PROJECT_ID \ --schema \ --format=prettyjson \ DATASET_ID.TABLE_ID > SCHEMA_FILE.jsonעורכים את קובץ הסכימה כדי להוסיף את האובייקט
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" } ]מעדכנים את הטבלה כדי לצרף תגים לעמודה הרגישה באמצעות הפקודה
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
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- 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"
}
}
}
]
}
}
```
הוספת תג לטבלה קיימת
מאחזרים את משאב הטבלה הנוכחי באמצעות השיטה
tables.get.משנים את משאב הטבלה כך שיכלול את השדה
dataGovernanceTagsInfoבעמודת היעד.מפעילים את השיטה
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
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- 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
כדי להוסיף משתמשים באמצעות עדכון ישיר של מדיניות, קודם צריך לקבל את המדיניות הנוכחית ואת ה-
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שולחים בקשת
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"כדי להסיר משתמשים ממדיניות, משתמשים ב-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.
החלת מדיניות על כמה פרויקטים
כברירת מחדל, רק מדיניות הנתונים של הפרויקט של הטבלה נבדקת. כללי מדיניות מפרויקטים אחרים לא חלים, אלא אם מוגדר פרויקט ברירת מחדל למדיניות נתונים ברמת הארגון. מידע נוסף על הגדרה והערכה של מדיניות בכמה פרויקטים זמין במאמר הגדרת פרויקט ברירת מחדל למדיניות נתונים.
המאמרים הבאים
- לסקירה כללית על התגים ב- Google Cloud
- איך יוצרים ומנהלים תגים?
- מידע נוסף על החלת כללי מדיניות על עמודות
- במאמר בקרת גישה באמצעות תנאי IAM מוסבר איך שולטים בגישה למשאבי BigQuery באמצעות תנאי IAM.