קישור אל Amazon S3

אדמינים ב-BigQuery יכולים ליצור חיבור כדי לאפשר לנתח נתונים לגשת לנתונים שמאוחסנים בדליים של Amazon Simple Storage Service ‏ (Amazon S3).

BigQuery Omni ניגש לנתונים ב-Amazon S3 באמצעות חיבורים. לכל חיבור יש משתמש ייחודי בניהול הזהויות והרשאות הגישה (IAM) של Amazon Web Services‏ (AWS). אתם מעניקים הרשאות למשתמשים באמצעות תפקידים ב-AWS IAM. המדיניות בתפקידי AWS IAM קובעת לאילו נתונים BigQuery יכול לגשת עבור כל חיבור.

צריך חיבורים כדי ליצור שאילתות על הנתונים ב-Amazon S3 וגם כדי לייצא תוצאות של שאילתות מ-BigQuery לקטגוריית S3 שלכם ב-Amazon.

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

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

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

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

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

יצירת מדיניות AWS IAM ל-BigQuery

מקפידים לפעול בהתאם לשיטות המומלצות לאבטחה ב-Amazon S3. מה אתם יכולים לעשות?

  • מגדירים מדיניות AWS שמונעת גישה לקטגוריית Amazon S3 דרך HTTP.
  • מגדירים מדיניות AWS שמונעת גישה ציבורית לקטגוריית Amazon S3.
  • משתמשים בהצפנה בצד השרת של Amazon S3.
  • הגבלת ההרשאות שניתנות לחשבון Google למינימום הנדרש.
  • מגדירים את CloudTrails ומפעילים את אירועי הנתונים של Amazon S3.

כדי ליצור מדיניות AWS IAM, משתמשים במסוף AWS או ב-Terraform:

מסוף AWS

  1. נכנסים למסוף AWS IAM. מוודאים שאתם בחשבון שבבעלותו קטגוריית Amazon S3 שאליה אתם רוצים לגשת.

    כניסה למסוף AWS IAM

  2. בוחרים באפשרות מדיניות > יצירת מדיניות (נפתח בכרטיסייה חדשה).

  3. לוחצים על JSON ומדביקים את הטקסט הבא בעורך:

    {
     "Version": "2012-10-17",
     "Statement": [
        {
         "Effect": "Allow",
         "Action": [
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::BUCKET_NAME"
          ]
        },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           EXPORT_PERM
         ],
         "Resource": [
           "arn:aws:s3:::BUCKET_NAME",
            "arn:aws:s3:::BUCKET_NAME/*"
          ]
        }
     ]
    }

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

    • BUCKET_NAME: באקט Amazon S3 שרוצים של-BigQuery תהיה גישה אליו.
    • EXPORT_PERM (אופציונלי): הרשאה נוספת אם רוצים לייצא נתונים לקטגוריה ב-Amazon S3. החלפה עם "s3:PutObject"
      • כדי להפריד את בקרת הגישה לייצוא, מומלץ ליצור חיבור נוסף עם תפקיד נפרד ב-AWS IAM ולהעניק לתפקיד גישה לכתיבה בלבד. כדי להגדיר בקרת גישה מפורטת יותר, אפשר גם להגביל את הגישה של תפקיד לנתיב ספציפי של הקטגוריה.
  4. בשדה Name, מזינים שם למדיניות, כמו bq_omni_read_only.

  5. לוחצים על יצירת מדיניות.

המדיניות נוצרת עם שם משאב Amazon‏ (ARN) בפורמט הבא:

arn:aws:iam::AWS_ACCOUNT_ID:policy/POLICY_NAME

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

  • AWS_ACCOUNT_ID: מספר המזהה של משתמש AWS IAM של החיבור.
  • POLICY_NAME: שם המדיניות שבחרתם.

AWS CLI

כדי ליצור מדיניות AWS IAM, משתמשים בפקודה aws iam create-policy:

  aws iam create-policy \
   --policy-name POLICY_NAME \
   --policy-document '{
     "Version": "2012-10-17",
     "Statement": [
        {
         "Effect": "Allow",
         "Action": [
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::BUCKET_NAME"
          ]
        },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           EXPORT_PERM
         ],
         "Resource": [
           "arn:aws:s3:::BUCKET_NAME",
            "arn:aws:s3:::BUCKET_NAME/*"
          ]
        }
     ]
    }'

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

  • POLICY_NAME: השם של המדיניות שיוצרים.
  • BUCKET_NAME: באקט Amazon S3 שרוצים של-BigQuery תהיה גישה אליו.
  • EXPORT_PERM (אופציונלי): הרשאה נוספת אם רוצים לייצא נתונים לקטגוריה של Amazon S3. החלפה עם "s3:PutObject"
    • כדי להפריד את בקרת הגישה לייצוא, מומלץ ליצור חיבור נוסף עם תפקיד נפרד ב-AWS IAM ולהעניק לתפקיד גישה לכתיבה בלבד. כדי להגדיר בקרת גישה מפורטת יותר, אפשר גם להגביל את הגישה של תפקיד לנתיב ספציפי של הקטגוריה.

המדיניות נוצרת עם שם משאב Amazon‏ (ARN) בפורמט הבא:

arn:aws:iam::AWS_ACCOUNT_ID:policy/POLICY_NAME

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

  • AWS_ACCOUNT_ID: מספר המזהה של משתמש AWS IAM של החיבור.
  • POLICY_NAME: שם המדיניות שבחרתם.

Terraform

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

  resource "aws_iam_policy" "bigquery-omni-connection-policy" {
    name = "bigquery-omni-connection-policy"

    policy = <<-EOF
            {
              "Version": "2012-10-17",
              "Statement": [
                  {
                      "Sid": "BucketLevelAccess",
                      "Effect": "Allow",
                      "Action": ["s3:ListBucket"],
                      "Resource": ["arn:aws:s3:::BUCKET_NAME"]
                  },
                  {
                      "Sid": "ObjectLevelAccess",
                      "Effect": "Allow",
                      "Action": ["s3:GetObject",EXPORT_PERM],
                      "Resource": [
                          "arn:aws:s3:::BUCKET_NAME",
                          "arn:aws:s3:::BUCKET_NAME/*"
                          ]
                  }
              ]
            }
            EOF
  }

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

  • BUCKET_NAME: באקט Amazon S3 שרוצים של-BigQuery תהיה גישה אליו.
  • EXPORT_PERM (אופציונלי): הרשאה נוספת אם רוצים לייצא נתונים לקטגוריה ב-Amazon S3. החלפה עם "s3:PutObject"
    • כדי להפריד את בקרת הגישה לייצוא, מומלץ ליצור חיבור נוסף עם תפקיד נפרד ב-AWS IAM ולהעניק לתפקיד גישת כתיבה בלבד. כדי להגדיר בקרת גישה מפורטת יותר, אפשר גם להגביל את הגישה של תפקיד לנתיב ספציפי בדלי.

יצירת תפקיד AWS IAM ל-BigQuery

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

כדי ליצור תפקיד AWS IAM, משתמשים במסוף AWS או ב-Terraform:

מסוף AWS

  1. נכנסים למסוף AWS IAM. מוודאים שאתם בחשבון שבבעלותו קטגוריית Amazon S3 שאליה אתם רוצים לגשת.

    כניסה למסוף AWS IAM

  2. בוחרים באפשרות תפקידים > יצירת תפקיד.

  3. בקטע Select type of trusted entity (בחירת סוג של ישות מהימנה), בוחרים באפשרות Web Identity (זהות באינטרנט).

  4. בשדה ספק זהויות, בוחרים באפשרות Google.

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

  6. לוחצים על הבא: הרשאות.

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

  8. לוחצים על הבא: תגים.

  9. לוחצים על הבא: בדיקה. מזינים שם לתפקיד, למשל BQ_Read_Only.

  10. לוחצים על יצירת תפקיד.

AWS CLI

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

  aws iam create-role \
   --role-name bigquery-omni-connection \
   --max-session-duration 43200 \
   --assume-role-policy-document '{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "accounts.google.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "accounts.google.com:sub": "00000"
                }
            }
        }
    ]
}'

Terraform

מוסיפים את הקוד הבא להגדרות של Terraform כדי ליצור תפקיד IAM ולהקצות את המדיניות לתפקיד שנוצר:

  resource "aws_iam_role" "bigquery-omni-connection-role" {
    name                 = "bigquery-omni-connection"
    max_session_duration = 43200

    assume_role_policy = <<-EOF
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "accounts.google.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "accounts.google.com:sub": "00000"
            }
          }
        }
      ]
    }
    EOF
  }

  resource "aws_iam_role_policy_attachment" "bigquery-omni-connection-role-attach" {
    role       = aws_iam_role.bigquery-omni-connection-role.name
    policy_arn = aws_iam_policy.bigquery-omni-connection-policy.arn
  }

  output "bigquery_omni_role" {
    value = aws_iam_role.bigquery-omni-connection-role.arn
  }

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

  aws iam attach-role-policy \
    --role-name bigquery-omni-connection \
    --policy-arn arn:aws:iam::AWS_ACCOUNT_ID:policy/POLICY_NAME

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

  • AWS_ACCOUNT_ID: מספר המזהה של משתמש AWS IAM של החיבור.
  • POLICY_NAME: שם המדיניות שבחרתם.

יצירת חיבורים

כדי להתחבר לקטגוריית Amazon S3, משתמשים בGoogle Cloud console, בכלי שורת הפקודה של BigQuery או בספריית הלקוח:

המסוף

  1. עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בחלונית Explorer, לוחצים על Add data.

    תיבת הדו-שיח הוספת נתונים נפתחת.

  3. בחלונית Filter By, בקטע Data Source Type, בוחרים באפשרות Storage/Data Lakes.

    אפשרות אחרת היא להזין aws או Amazon S3 בשדה חיפוש מקורות נתונים.

  4. בקטע מקורות נתונים מומלצים, לוחצים על Amazon S3.

  5. לוחצים על כרטיס הפתרון Amazon S3 Omni: BigQuery Federation.

  6. בתיבת הדו-שיח Create table, בשדה Connection ID, בוחרים באפשרות Create a new S3 connection.

  7. בחלונית מקור נתונים חיצוני, מזינים את הפרטים הבאים:

    • בקטע סוג החיבור, בוחרים באפשרות BigLake ב-AWS (דרך BigQuery Omni).
    • בשדה מזהה החיבור, מזינים מזהה למשאב החיבור. אפשר להשתמש באותיות, במספרים, במקפים ובקווים תחתונים.
    • בקטע Region בוחרים את המיקום שבו רוצים ליצור את החיבור.
    • אופציונלי: בשדה Friendly name (שם ידידותי), מזינים שם ידידותי לחיבור, כמו My connection resource. השם הידידותי יכול להיות כל ערך שיעזור לכם לזהות את משאב החיבור אם תצטרכו לשנות אותו בהמשך.
    • אופציונלי: בשדה Description, מזינים תיאור למשאב החיבור הזה.
    • בשדה מזהה תפקיד ב-AWS, מזינים את מזהה תפקיד ה-IAM המלא שיצרתם בפורמט הזה:
      arn:aws:iam::AWS_ACCOUNT_ID:role/ROLE_NAME
  8. לוחצים על יצירת קישור.

  9. לוחצים על מעבר לחיבור.

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

      BigQuery Google identity: IDENTITY_ID
      

Terraform

  resource "google_bigquery_connection" "connection" {
    connection_id = "bigquery-omni-aws-connection"
    friendly_name = "bigquery-omni-aws-connection"
    description   = "Created by Terraform"

    location      = "AWS_LOCATION"
    aws {
      access_role {
        # This must be constructed as a string instead of referencing the
        # AWS resources directly to avoid a resource dependency cycle
        # in Terraform.
        iam_role_id = "arn:aws:iam::AWS_ACCOUNT:role/IAM_ROLE_NAME"
      }
    }
  }

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

  • AWS_LOCATION: מיקום ב-Amazon S3 ב- Google Cloud
  • AWS_ACCOUNT: מזהה החשבון ב-AWS.
  • IAM_ROLE_NAME: התפקיד שמאפשר גישה לדלי Amazon S3 מ-BigQuery. משתמשים בערך של הארגומנט name מהמשאב aws_iam_role במאמר יצירת תפקיד AWS IAM ל-BigQuery.

BQ

bq mk --connection --connection_type='AWS' \
--iam_role_id=arn:aws:iam::AWS_ACCOUNT_ID:role/ROLE_NAME \
--location=AWS_LOCATION \
CONNECTION_ID

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

  • AWS_ACCOUNT_ID: מספר המזהה של משתמש AWS IAM בחיבור
  • ROLE_NAME: שם מדיניות התפקיד שבחרתם
  • AWS_LOCATION: מיקום ב-Amazon S3 ב- Google Cloud
  • CONNECTION_ID: המזהה שאתם נותנים למשאב החיבור הזה.

בשורת הפקודה מוצג הפלט הבא:

  Identity: IDENTITY_ID

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

  • IDENTITY_ID: חשבון משתמש ב-Google ששולט בחיבור הספציפי. Google Cloud

שימו לב לערך IDENTITY_ID.

Java

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

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

import com.google.cloud.bigquery.connection.v1.AwsAccessRole;
import com.google.cloud.bigquery.connection.v1.AwsProperties;
import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.CreateConnectionRequest;
import com.google.cloud.bigquery.connection.v1.LocationName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to create aws connection
public class CreateAwsConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    // Example of location: aws-us-east-1
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    // Example of role id: arn:aws:iam::accountId:role/myrole
    String iamRoleId = "MY_AWS_ROLE_ID";
    AwsAccessRole role = AwsAccessRole.newBuilder().setIamRoleId(iamRoleId).build();
    AwsProperties awsProperties = AwsProperties.newBuilder().setAccessRole(role).build();
    Connection connection = Connection.newBuilder().setAws(awsProperties).build();
    createAwsConnection(projectId, location, connectionId, connection);
  }

  static void createAwsConnection(
      String projectId, String location, String connectionId, Connection connection)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      LocationName parent = LocationName.of(projectId, location);
      CreateConnectionRequest request =
          CreateConnectionRequest.newBuilder()
              .setParent(parent.toString())
              .setConnection(connection)
              .setConnectionId(connectionId)
              .build();
      Connection response = client.createConnection(request);
      AwsAccessRole role = response.getAws().getAccessRole();
      System.out.println(
          "Aws connection created successfully : Aws userId :"
              + role.getIamRoleId()
              + " Aws externalId :"
              + role.getIdentity());
    }
  }
}

הוספת יחסי אמון לתפקיד ב-AWS

ל-BigQuery Omni יש שתי שיטות לגישה מאובטחת לנתונים מ-Amazon S3. אפשר להעניק לחשבון השירות גישה לתפקיד ב-AWS, או שאם בחשבון AWS שלכם יש ספק זהויות בהתאמה אישית ל-accounts.google.com, אתם צריכים להוסיף את חשבון השירות כקהל לספק: Google Cloud Google Cloud

הוספת מדיניות אמון לתפקיד ב-AWS

יחסי האמון מאפשרים לחיבור לקבל את התפקיד ולגשת לנתונים ב-Amazon S3 בהתאם להגדרות במדיניות התפקידים.

כדי להוסיף יחסי אמון, משתמשים במסוף AWS או ב-Terraform:

מסוף AWS

  1. נכנסים למסוף AWS IAM. מוודאים שאתם בחשבון שבבעלותו קטגוריית Amazon S3 שאליה אתם רוצים לגשת.

    כניסה למסוף AWS IAM

  2. בוחרים באפשרות תפקידים.

  3. בוחרים את ROLE_NAME שיצרתם.

  4. לוחצים על עריכה ומבצעים את הפעולות הבאות:

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

      עורכים את הכפתור ב-AWS כדי להגדיר את משך הסשן.

    2. לוחצים על שמירת השינויים.

  5. בוחרים באפשרות Trust Relationships (יחסי אמון) ולוחצים על Edit trust relationship (עריכת יחסי אמון). מחליפים את תוכן המדיניות בתוכן הבא:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "accounts.google.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "accounts.google.com:sub": "IDENTITY_ID"
            }
          }
        }
      ]
    }

    מחליפים את IDENTITY_ID בערך של זהות Google ב-BigQuery, שאפשר למצוא במסוף Google Cloud בחיבור שיצרתם.

  6. לוחצים על עדכון מדיניות האמון.

AWS CLI

כדי ליצור יחסי אמון עם חיבור BigQuery, משתמשים בפקודה aws iam update-assume-role-policy:

  aws iam update-assume-role-policy \
    --role-name bigquery-omni-connection \
    --policy-document '{
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "accounts.google.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "accounts.google.com:sub": "IDENTITY_ID"
            }
          }
        }
      ]
    }'
  aws iam update-assume-role-policy \
    --role-name bigquery-omni-connection \
    --policy-document '{
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "accounts.google.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "accounts.google.com:sub": "IDENTITY_ID"
            }
          }
        }
      ]
    }'

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

  • IDENTITY_ID: הערך של הזהות ב-BigQuery Google, שאפשר למצוא במסוף Google Cloud בחיבור שיצרתם.

Terraform

מעדכנים את המשאב aws_iam_role בהגדרות של Terraform כדי להוסיף יחסי אמון:

    resource "aws_iam_role" "bigquery-omni-connection-role" {
      name                 = "bigquery-omni-connection"
      max_session_duration = 43200

      assume_role_policy = <<-EOF
          {
            "Version": "2012-10-17",
            "Statement": [
              {
                "Effect": "Allow",
                "Principal": {
                  "Federated": "accounts.google.com"
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                  "StringEquals": {
                    "accounts.google.com:sub": "${google_bigquery_connection.connection.aws[0].access_role[0].identity}"
                  }
                }
              }
            ]
          }
          EOF
    }

החיבור מוכן לשימוש.

הגדרת ספק זהויות מותאם אישית של AWS

אם בחשבון AWS שלכם מוגדר ספק זהויות בהתאמה אישית עבור accounts.google.com, תצטרכו להוסיף את IDENTITY_ID כקהל לספק. כדי לעשות את זה:

  1. נכנסים למסוף AWS IAM. מוודאים שאתם בחשבון שבבעלותו קטגוריית Amazon S3 שאליה אתם רוצים לגשת.

    כניסה למסוף AWS IAM

  2. עוברים אל IAM > Identity Providers.

  3. בוחרים את ספק הזהויות עבור accounts.google.com.

  4. לוחצים על הוספת קהל ומוסיפים את IDENTITY_ID כקהל.

החיבור מוכן לשימוש.

שיתוף חיבורים עם משתמשים

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

  • roles/bigquery.connectionUser: מאפשר למשתמשים להשתמש בחיבורים כדי להתחבר למקורות נתונים חיצוניים ולהריץ עליהם שאילתות.

  • roles/bigquery.connectionAdmin: מאפשר למשתמשים לנהל את החיבורים.

במאמר תפקידים והרשאות מוגדרים מראש יש מידע נוסף על תפקידים והרשאות ב-IAM ב-BigQuery.

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף BigQuery.

    כניסה ל-BigQuery

    החיבורים מופיעים בפרויקט בקבוצה שנקראת Connections (חיבורים).

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

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

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

  3. לוחצים על הפרויקט, לוחצים על Connections (חיבורים) ובוחרים חיבור.

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

    1. בתיבת הדו-שיח Connection permissions, מוסיפים או עורכים חשבונות משתמשים כדי לשתף את החיבור עם חשבונות משתמשים אחרים.

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

BQ

אי אפשר לשתף חיבור עם כלי שורת הפקודה של BigQuery. כדי לשתף חיבור, משתמשים במסוף Google Cloud או בשיטה BigQuery Connections API.

API

משתמשים בשיטה projects.locations.connections.setIAM בקטע BigQuery Connections API בארכיטקטורת REST הפניית API ומספקים מופע של משאב policy.

Java

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

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

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

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