|OFSFSPCS|の設定: Snowflakeロールを作成する

Openflow - Snowflake Deployment では、デプロイメントではなく、特定のランタイムに固有のリソースを多数作成する必要があります。通常、そのようなリソースには次が含まれます。

  • ランタイム固有のSnowflakeロールの作成

  • ランタイム固有のネットワークルールと外部アクセス統合(EAI)の作成

このトピックでは、これらのリソースの作成について説明します。

  1. SnowflakeデプロイメントセクションでランタイムのSnowflakeロールにデータを書き込むための、Snowflakeロールと関連する権限を作成します。

  2. Snowflakeロールを関連付けます。SnowflakeデプロイメントセクションのランタイムのSnowflakeロールを参照してください。

  3. 外部アクセス統合を作成し、それらをランタイムに関連付けます。外部アクセス統合の作成 をご参照ください

  4. SPCS エグレスを使用してプライベートシステムに接続するために、アウトバウンド PrivateLink 接続が必要になる場合。

Snowflakeロールを作成する

Openflowランタイムを作成および編集する際、ランタイム所有者は、ロールをランタイムに関連付けることができます。このロールは、ランタイム内で実行されるフローに使用されます。Snowflakeロールについて詳しくは、:ref:`label-openflow-spcs-what-is-runtime-role`を参照してください。

Snowflakeロールの作成はランタイムを作成するための前提条件であり、次のステップが含まれます。

  1. ロール自体を作成する

  2. ランタイムが使用するウェアハウスへのアクセス権をロールに付与します。

  3. ランタイムが使用するSnowflakeオブジェクトへのアクセス権をロールに付与します。

  4. ランタイムが使用する外部アクセス統合へのアクセス権をロールに付与します。

Snowflakeロールを作成する方法は次のとおりです。

  1. 必要なSnowflakeロールを作成します。

    注釈

    <RUNTIMENAME> は、関連するランタイムの名前を示します。

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE IF NOT EXISTS OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
    
    GRANT ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME> TO USER <username>;
    
    Copy
  2. Snowflakeロールに、データインジェスチョンに使用する予定の既存のウェアハウスを使用することを許可します。後でこのSnowflakeロールを使用するランタイム用のコネクタを構成する際に、このウェアハウスを使用します。

    GRANT USAGE, OPERATE ON WAREHOUSE <OPENFLOW_INGEST_WAREHOUSE> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
    
    Copy
  3. SnowflakeロールにSnowflakeオブジェクトを使用、作成、またはアクセスすることを許可します。

    注釈

    作成されるOpenflowコネクタに応じて、基礎となる必須オブジェクトは異なります。以下の例は、説明のみを目的としています。

    GRANT USAGE ON DATABASE <OPENFLOW_SPCS_DATABASE> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
    GRANT USAGE ON SCHEMA <OPENFLOW_SPCS_SCHEMA> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
    
    Copy

ネットワークルールと外部アクセス統合の作成

Snowflakeのセキュリティモデルは、ネットワークポリシー を使用して、特定のエンドポイントおよびSnowflake外部のシステムへの安全なアクセスを提供します。

ネットワークポリシーの2つの重要な側面は、ネットワークルール および 外部アクセス統合(EAI) です。それぞれが、ランタイムに必要な外部リソースへの安全なアクセスを提供するために使用されます。

ネットワークルールと外部アクセス統合を作成するために必要な3つのステップがあります。

  1. ネットワークルールを作成し、ネットワーク識別子を論理的エリアにグループ化します。

  2. 外部アクセス統合(EAI)を作成し、ネットワークルールのリストを指定し、Snowflakeロールが EAI で USAGE を持つようにします。

  3. ランタイムの作成時に、Openflow UI で EAI をランタイムに関連付けます。

必要なネットワークルールと EAI を作成するには、次のステップを実行します。

注釈

これらの例では、作成されるランタイムの名前のプレースホルダーとして RUNTIME_NAME を使用します。

  1. 適切なネットワークルールを作成します。 詳細については、 CREATE NETWORK RULE をご参照ください。

    注釈

    <OPENFLOW_DATABASE> は、ネットワークルールを含むデータベースの名前を示します。Snowflakeでは、Openflowに関連するネットワークルールと外部アクセス統合のために、特別なデータベースを作成することを提案しています。

    USE DATABASE <OPENFLOW_DATABASE>;
    
    CREATE NETWORK RULE IF NOT EXISTS OPENFLOW_<RUNTIME_NAME>_NETWORK_RULE
        MODE = EGRESS
        TYPE = HOST_PORT
        VALUE_LIST = ('comma separated list of host:port pairs');
    
    Copy
  2. 外部アクセス統合を作成するか、既存のものにネットワークルールを追加します。詳細については、 CREATE EXTERNAL ACCESS INTEGRATION をご参照ください。

    新しいEAIの作成:

    USE ROLE ACCOUNTADMIN;
    
    CREATE EXTERNAL ACCESS INTEGRATION IF NOT EXISTS OPENFLOW_<RUNTIME_NAME>_EAI
       ALLOWED_NETWORK_RULES = (OPENFLOW_<RUNTIME_NAME>_NETWORK_RULE)
       ENABLED = TRUE;
    
    Copy

    既存のEAIにネットワークルールを追加するには、まずどのルールが既に関連付けられているかを確認し、次に既存のルールと新しいルールの両方を含めるようにEAIを更新します。

    USE ROLE ACCOUNTADMIN;
    
    -- Check the current rules on the EAI
    DESCRIBE EXTERNAL ACCESS INTEGRATION OPENFLOW_<RUNTIME_NAME>_EAI;
    
    Copy

    出力で``ALLOWED_NETWORK_RULES``プロパティを見つけ、既存のルールを記録します。次に、既存のすべてのルールを新しいルールとともにリストして、EAIを更新します。

    ALTER EXTERNAL ACCESS INTEGRATION OPENFLOW_<RUNTIME_NAME>_EAI
       SET ALLOWED_NETWORK_RULES = (
          <EXISTING_RULE_1>,
          <EXISTING_RULE_2>,
          OPENFLOW_<RUNTIME_NAME>_NETWORK_RULE
       );
    
    Copy
  3. 以前に作成したSnowflakeロールに、EAIへのアクセス権を付与します。

    GRANT USAGE ON INTEGRATION OPENFLOW_<RUNTIME_NAME>_EAI TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIME_NAME>;
    
    Copy

次のステップ

ランタイムを作成する