קישור אל Amazon S3

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

לכל חיבור יש משתמש ייחודי ב-Amazon Web Services (AWS) Identity and Access Management (IAM). אתם נותנים הרשאות למשתמש הזה באמצעות תפקידי AWS IAM, שהמדיניות שלהם קובעת לאילו נתונים BigQuery יכול לגשת בכל חיבור.

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

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

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

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

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

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

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

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

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

מסוף AWS

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

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

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

  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. לוחצים על יצירת מדיניות.

המדיניות נוצרת עם שם משאב של אמזון (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 ולהעניק לתפקיד גישה לכתיבה בלבד. כדי להגדיר בקרת גישה מפורטת יותר, אפשר גם להגביל את הגישה של תפקיד לנתיב ספציפי של הקטגוריה.

המדיניות נוצרת עם שם משאב של אמזון (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. בוחרים באפשרות Roles > Create role.

  3. בקטע Select type of trusted entity, בוחרים באפשרות Web Identity.

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

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

  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

כדי ליצור תפקיד ב-IAM ולהקצות את המדיניות לתפקיד שנוצר, מוסיפים את הקוד הבא להגדרות של 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": "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 , בכלי שורת הפקודה של BigQuery או בספריית הלקוח:

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

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

    תיבת הדו-שיח Add data נפתחת.

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

    אפשר גם להזין aws או Amazon S3 בשדה Search for data sources.

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

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

  6. בחלונית External data source, מזינים את הפרטים הבאים:

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

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

  9. בחלונית Connection info, מעתיקים את מזהה 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. אתם יכולים לתת לחשבון השירות של Google Cloud גישה לתפקיד ב-AWS, או אם לחשבון AWS יש ספק זהויות בהתאמה אישית בשביל accounts.google.com, אתם צריכים להוסיף את חשבון השירות של 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. לוחצים על Update Trust Policy.

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: הערך של מזהה Google ל-BigQuery, שמופיע במסוף 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. לוחצים על Add Audience ומוסיפים את IDENTITY_ID בתור הקהל.

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

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

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

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

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

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

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

המסוף

  1. נכנסים לדף BigQuery.

    כניסה ל-BigQuery

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

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

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

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

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

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

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

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

BQ

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

API

משתמשים בשיטה projects.locations.connections.setIAM בקטע של מאמרי העזרה של ה-API בנושא BigQuery Connections API בארכיטקטורת REST, ומספקים מכונה של המשאב 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");
    }
  }
}

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