カタログの作成

Snowflakeオープンカタログサービスの管理者はカタログを作成します。

カタログを作成する手順は、クラウドストレージプロバイダーによって異なります。

カタログを作成するときに、外部クラウドストレージに関する情報を提供し、Snowflakeオープンカタログはその情報を使用してストレージ構成を作成します。この構成には、ストレージ場所のIDおよびアクセス管理(IAM)エンティティが格納されます。オープンカタログは、 IAM エンティティを使用して、テーブルデータ、Apache Iceberg™メタデータ、およびマニフェストファイルにアクセスするために、ストレージの場所に安全に接続します。

手順については、以下のセクションをご参照ください。

Amazon Simple Storage Service (Amazon S3)を使用したカタログの作成

前提条件

  • Snowflakeアカウントをホストしているのと同じリージョンにあるS3ストレージバケット

    • オープンカタログは、ドットを含むバケット名(例えば、 my.s3.bucket)をサポートできません。S3内のデータにアクセスするために、オープンカタログは仮想ホストスタイルのパスと HTTPS を使用します。しかし、S3は名前にドットを含む仮想ホストスタイルのバケットでは SSL をサポートしません。

    • データ復旧機能については、ストレージプロバイダーをご参照ください。

  • IAM ポリシーとロールの作成および管理のための AWS での権限

    AWS 管理者でない場合は、 AWS 管理者にこれらのタスクを実行するように依頼します。

ステップ1:S3ロケーションへのアクセスを許可するIAMポリシーを作成します。

AWS 管理コンソールでオープンカタログのアクセス許可を構成するには、次の手順に従います。

  1. AWS 管理コンソールにサインインします。

  2. ホームダッシュボードで、 IAM を選択します。

  3. ナビゲーションペインで、 アカウント設定 を選択します。

  4. セキュリティトークンサービス(STS) の下にある エンドポイント リストで、あなたのアカウントがあるオープンカタログリージョンを見つけ、 STS ステータス が非アクティブであれば、トグルを アクティブ に設定します。

  5. ナビゲーションペインで、 ポリシー を選択します。

  6. ポリシーを作成 を選択します。

  7. ポリシーエディター で、 JSON を選択します。

  8. S3ロケーションへのデータの読み取りと書き込みに必要なアクセス許可をオープンカタログに提供するポリシーを追加します。

    次のポリシー例は、指定したバケット内のすべての場所へのアクセスを許可します。

       {
          "Version": "2012-10-17",
          "Statement": [
                {
                   "Effect": "Allow",
                   "Action": [
                      "s3:PutObject",
                      "s3:GetObject",
                      "s3:GetObjectVersion",
                      "s3:DeleteObject",
                      "s3:DeleteObjectVersion"
                   ],
                   "Resource": "arn:aws:s3:::<my_bucket>/*"
                },
                {
                   "Effect": "Allow",
                   "Action": [
                      "s3:ListBucket",
                      "s3:GetBucketLocation"
                   ],
                   "Resource": "arn:aws:s3:::<my_bucket>",
                   "Condition": {
                      "StringLike": {
                            "s3:prefix": [
                               "*"
                            ]
                      }
                   }
                }
          ]
       }
    
    Copy

    注意

    • *my_bucket* を実際のバケット名に置き換えてください。バケット内のパスを指定することもできます。例: *my_bucket*/*path*

    • "s3:prefix": 条件を ["*"] に設定すると、指定したバケット内のすべてのプレフィックスへのアクセスを許可し、 ["*path*/*"] に設定すると バケット内の指定したパスへのアクセスを許可します。

    • 政府リージョンのバケットについては、 ARNs バケットは arn:aws-us-gov:s3::: のプレフィックスを使用します。

  9. 次へ を選択します。

  10. ポリシー名 には、ポリシー名を入力します(例えば、 open_catalog_access)。

  11. オプション: 説明 には、説明を入力してください。

  12. ポリシーを作成 を選択します。

ステップ2: IAM ロールを作成し、S3バケットに権限を付与する

  1. AWS 管理コンソールから、IDおよびアクセス管理(IAM)ダッシュボードで、ナビゲーションペインの ロール を選択します。

  2. ロールを作成 を選択します。

  3. 信頼できるエンティティタイプでは、 AWS アカウント を選択します。

  4. AWS アカウント の下で、 このアカウント を選択します。

    後のステップで、信頼関係を変更し、オープンカタログにアクセスを許可します。

  5. オプション: 外部 ID を作成するには、 外部 ID が必要 チェックボックスを選択し、external IDを入力します。例えば、 open_catalog_external_id です。

    注意

    カタログ作成時に外部 ID を作成しない場合、オープンカタログが外部 ID を生成して使用します。外部 ID は、オープンカタログなどのサードパーティに AWS リソース(S3バケットなど)へのアクセスを許可するために使用されます。

  6. 次へ を選択します。

  7. 前のステップで作成したポリシーを選択し、 次へ を選択します。

  8. ロールの名前と説明を入力し、 ロールを作成 を選択します。

    これで、S3ロケーションの IAM ポリシー、および IAM ロールを作成し、ロールにポリシーを添付しました。

  9. ロールの概要ページを表示するには、 ロールを表示 を選択します。

  10. ロールの ARN (Amazonリソース名)値を探して記録します。

ステップ3: オープンカタログでカタログを作成する

  1. オープンカタログにサインインします。

  2. オープンカタログのホームページの カタログ エリアで、 +作成 を選択します。

  3. カタログを作成 ダイアログで、フィールドを入力します。

    1. 名前 には、カタログの名前を入力します。

      カタログ名は大文字と小文字を区別します。

    2. オプション: 外部カタログを作成するには、 外部 トグルを オン に設定します。

      外部カタログの詳細については、カタログの種類をご参照ください。

    3. ストレージプロバイダー では、 S3 を選択します。

    4. デフォルトのベースロケーション には、 AWS S3ストレージバケットのデフォルトのロケーションを入力します。

    5. オプション: カタログが複数のロケーションに格納されたオブジェクトを含む場合は、 追加のロケーション(オプション) に追加のロケーションをそれぞれ(カンマで区切って)列挙します。

    6. S3ロール ARN には、オープンカタログ用に作成した IAM ロールの ARN を入力します。

    7. オプション: IAM ロールの作成時に外部 ID を作成した場合は、 外部 ID に、外部 ID を入力します。

    8. 作成 を選択します。

ステップ4: オープンカタログアカウントの AWS IAM ユーザーを取得する

  1. オープンカタログのホームページの カタログ エリアで、作成したカタログを選択します。

  2. ストレージの詳細 の下に、 IAM ユーザーARN をコピーします。例えば、 arn:aws:iam::123456789001:user/abc1-b-self1234

    オープンカタログは、オープンカタログアカウント全体に対して単一の IAM ユーザーをプロビジョニングします。アカウント内のすべてのS3ストレージ構成では、その IAM ユーザーが使用されます。

    注意 IAM ロールを作成するときに外部 ID を指定しなかった場合、オープンカタログは使用するための外部 ID を生成します。生成された外部IDでIAMのロール信頼ポリシーを更新できるように値を記録してください。

ステップ5: バケットオブジェクトにアクセスするために IAM ユーザー権限を付与する

  1. AWS 管理コンソールにサインインします。

  2. ホームダッシュボードから、 IAM を検索して選択します。

  3. ナビゲーションペインで、 ロール を選択します。

  4. ストレージ構成用に作成した IAM ロールを選択します。

  5. 信頼関係 タブを選択します。

  6. 信頼ポリシーを編集 を選択します。

  7. 記録したカタログストレージの詳細でポリシードキュメントを修正します。

       {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Sid": "",
             "Effect": "Allow",
             "Principal": {
               "AWS": "<open_catalog_user_arn>"
             },
             "Action": "sts:AssumeRole",
             "Condition": {
               "StringEquals": {
                 "sts:ExternalId": "<open_catalog_external_id>"
               }
             }
           }
         ]
       }
    
    Copy

    条件:

    • open_catalog_user_arn は、記録した IAM ユーザー ARN です。

    • open_catalog_external_id は外部 ID です。ロールの作成時に外部 ID を指定し、同じ ID を使用してストレージ構成を作成した場合は、値をそのままにします。そうでない場合は、記録した値で sts:ExternalId を更新します。

    注意

    新しいストレージ構成を作成し、独自の外部 ID を提供しない場合は、このポリシードキュメントを更新する必要があります。セキュリティ上の理由から、新規または再作成されたストレージ構成は異なる外部 ID を持ち、この信頼ポリシーを更新しない限り、信頼関係を解決できません。

    IAM ロールのポリシードキュメント例

    IAM ロールの信頼ポリシーを更新します。

  8. 変更を保存するには、 ポリシーを更新 を選択します。

Googleのクラウドストレージを使用したカタログの作成

このセクションでは、ストレージ構成を使用してカタログを作成し、クラウドストレージのバケットにオープンカタログの制限付きアクセス権を付与する方法について説明します。

組織の管理者がGoogle Cloudアカウントで IAM ユーザーに権限を付与します。

注意

  • このトピックの手順を完了するには、IAMポリシーとロールを作成および管理するためのGoogle Cloudでの権限が必要です。Google Cloudの管理者でない場合は、Google Cloud管理者にこれらのタスクの実行を依頼します。

  • データ復旧機能については、ストレージプロバイダーをご参照ください。

ステップ1: カタログを作成する

  1. オープンカタログにサインインします。

  2. オープンカタログのホームページの カタログ エリアで、 +作成 を選択します。

  3. カタログを作成 ダイアログで、フィールドを入力します。

    1. 名前 には、カタログの名前を入力します。

      カタログ名は大文字と小文字を区別します。

    2. オプション: 外部カタログを作成するには、 外部 トグルを オン に設定します。

      外部カタログの詳細については、カタログの種類をご参照ください。

    3. ストレージプロバイダー には、 GCS を選択します。

    4. デフォルトのベースロケーション には、クラウドストレージバケットのデフォルトのベースロケーションを入力します。

    5. オプション: カタログに複数の場所に格納されたオブジェクトを含まれている場合は、 追加の場所(オプション) に、カンマで区切って追加の格納場所をそれぞれ列挙します。

    6. 作成 を選択します。

ステップ2: オープンカタログアカウントのGoogle Cloudサービスアカウントを取得する

  1. オープンカタログのホームページの カタログ エリアから、作成したカタログを選択します。

  2. ストレージの詳細 の下に、例えば、 service-account-id@project1-123456.iam.gserviceaccount.com などの GCP_SERVICE_ACCOUNT ID をコピーします。

    オープンカタログは、オープンカタログアカウント全体に対して単一のGoogle Cloudサービスアカウントをプロビジョニングし、Google Cloud上のストレージにアクセスする際にそのサービスアカウントを使用します。

ステップ3: バケットオブジェクトにアクセスするためのサービスアカウント権限を付与する

このステップでは、Google Cloudコンソールでオープンカタログの IAM アクセス許可を構成します。

カスタム IAM ロールを作成する

バケットにアクセスしてオブジェクトを取得するために必要な権限を持つカスタムロールを作成します。

  1. プロジェクトエディターとしてGoogle Cloudコンソールにサインインします。

  2. ホームダッシュボードのナビゲーションメニューで、 IAM & Admin > ロール を選択します。

  3. ロールを作成 を選択します。

  4. タイトル には、カスタムロールのタイトルを入力します。

  5. オプション: 説明 には、カスタムロールの説明を入力します。

  6. 権限を追加 を選択します。

  7. フィルター で、 サービス を選択し、 ストレージ を選択します。

  8. 権限のリストをフィルターし、リストから次を追加します。

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  9. 追加 を選択します。

  10. 作成 を選択します。

Google Cloudサービスアカウントへのカスタムロールの割り当て

この手順では、Google Cloudコンソールに留まります。

  1. ホームダッシュボードのナビゲーションメニューで、 クラウドストレージ > バケット を選択します。

  2. バケットのリストをフィルターし、オープンカタログのストレージ構成で指定したバケットを選択します。

  3. 権限 > プリンシパルごとに表示 を選択し、 アクセスを付与 を選択します。

  4. プリンシパルを追加 の下に、先ほどコピーしたサービスアカウント ID を貼り付けます。

  5. ロールを割り当て で、先ほど作成したカスタム IAM ロールを選択し、 保存 を選択します。

Azureストレージを使用したカタログの作成

このセクションでは、ストレージ構成を使用して、オープンカタログに自分のMicrosoft Azureコンテナへの制限付きアクセス権を付与する方法について説明します。オープンカタログは、ストレージ構成として以下のAzureクラウドストレージサービスをサポートしています。

  • BLOBストレージ

  • Data Lake Storage Gen2

  • 汎用v1

  • 汎用v2

組織の管理者がAzureアカウントで IAM ユーザーに権限を付与します。

注意

  • このトピックの手順を完了するには、IAMポリシーおよびロールの作成および管理のための権限が必要です。Azure管理者でない場合は、Azure管理者にこれらのタスクを実行するよう依頼します。

  • データ復旧機能については、ストレージプロバイダーをご参照ください。

ステップ1: カタログを作成する

  1. オープンカタログにサインインします。

  2. オープンカタログのホームページの カタログ エリアで、 +作成 を選択します。

  3. カタログを作成 ダイアログで、フィールドを入力します。

    1. 名前 には、カタログの名前を入力します。

      カタログ名は大文字と小文字を区別します。

    2. オプション: 外部カタログを作成するには、 外部 トグルを オン に設定します。

      外部カタログの詳細については、カタログの種類をご参照ください。

    3. ストレージプロバイダー には、 AZURE を選択します。

    4. デフォルトのベースロケーション には、このリストから該当する形式をコンテナのプライマリエンドポイントへのパスに適用して、Azureストレージコンテナのデフォルトのベースロケーションを入力します。

      エンドポイントタイプ

      形式

      デフォルトのベースロケーションの例

      BLOB

      abfss://<container_name>@<storage_account_name>.blob.core.windows.net/<directory_name>/

      abfss://my_container1@my_storageaccount1.blob.core.windows.net/my_directory1/

      Azure Data Lake Storage(ADLS)

      abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<directory_name>/

      abfss://my_container2@my_storageaccount2.dfs.core.windows.net/my_directory2/

      注意

      • Microsoft Azureコンテナを作成したときに、このパスとコンテナ名をコピーしました。

      • コンテナのプライマリエンドポイントへのパスで、ストレージアカウントの名前は、 https:// とパスの最初のピリオドの間のテキストです。

      • https:// ではなく、 abfss:// プレフィックスを使用してください。

    5. オプション: カタログに複数のロケーションに格納されたオブジェクトが含まれる場合、 追加のロケーション(オプション) フィールドに、カンマで区切って追加のストレージロケーションをそれぞれ列挙します。

    6. テナント ID には、Azureテナント ID を入力します。

    7. 作成 を選択します。

ステップ2: ストレージの場所の値をコピーする

  1. オープンカタログのホームページの カタログ エリアで、作成したカタログを選択します。

  2. ストレージの詳細 の下に、以下の値をコピーします。

    プロパティ

    説明

    AZURE_CONSENT_URL

    Microsoftのアクセス許可リクエストページへの URL。

    AZURE_MULTI_TENANT_APP_NAME

    アカウント用に作成されたSnowflakeクライアントアプリケーションの名前。このセクションの後半のステップでは、このアプリケーションに許可されたストレージの場所でアクセストークンを取得するための権限を付与します。

    これらの値は次のステップで使用します。

ステップ3。アクセストークンへのAzureサービスプリンシパルの権限の付与

  1. ウェブブラウザで、Microsoftの許可リクエストページ(Azureの同意 URL)に移動します。

  2. 同意する を選択します。

    このアクションにより、オープンカタログアカウント用に作成されたAzureサービスプリンシパルはテナント内の指定されたリソースでアクセストークンを取得できます。アクセストークンの取得は、コンテナに対する適切なアクセス許可をサービスプリンシパルに付与した場合にのみ成功します。Microsoftの権限リクエストページは、Snowflakeの企業サイト(snowflake.com)にリダイレクトされます。

  3. Microsoft Azureポータルにサインインします。

  4. Azureサービス > ストレージアカウント を開きます。

  5. オープンカタログのサービスプリンシパルがアクセスする必要があるストレージアカウント名を選択します。

  6. アクセス制御(IAM) > ロール割り当てを追加 を選択します。

  7. Storage Blob Data Contributorロールなど、オープンカタログのサービスプリンシパルに付与する希望のロールを選択します。

    Storage Blob Data Contributorロールは、オープンカタログのサービスプリンシパルに読み取りと書き込みのアクセス権を付与し、ストレージの場所への書き込みアクセス権を付与します。

    注意

    オープンカタログは、ユーザー委任共有アクセス署名(SAS)トークンを発行します。ストレージBLOBにアクセスするための SAS トークンは、BLOBやディレクトリではなく、コンテナレベルにスコープが限定されます。選択するロールは、ユーザー委任キーを作成する権限を持っている必要があります。これらのロールのリストについては、RBAC を使用した権限の割り当てをご参照ください。

  8. 次へ を選択します。

  9. +メンバーを選択 を選択します。

  10. 1時間後、Azureマルチテナントアプリ名プロパティであるオープンカタログのサービスプリンシパルを検索して選択します。プロパティ値で、アンダースコアの にある文字列を検索します。

    重要

    • AzureがこのセクションのMicrosoftリクエストページでリクエストされたオープンカタログのサービスプリンシパルを作成するのに、1時間以上かかる場合があります。サービスプリンシパルがすぐに利用できない場合は、1~2時間待ってから、もう一度検索してください。

    • サービスプリンシパルを削除すると、認証に失敗してカタログが動作しなくなります。

  11. 選択 選択します。

  12. レビュー+割り当て を選択します。

注意

ロールを割り当てると、変更が有効になるまで最大10分かかることがあります。詳細については、Microsoft Azureドキュメントの症状 - ロールの割り当て変更が検出されないをご参照ください。