モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

Snowflake におけるアクセス制御の設定

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2021/09/19
最終更新最終更新
2023/12/29
記事区分記事区分
一般公開

目次

    サイバーセキュリティエンジニア

    Snowflake について、アクセス制御の設定を記載します。

    参考資料: Access Control in Snowflake

    user と role の関係

    Role Hierarchy and Privilege Inheritance

    • role には 1 個以上の別の role が grant されています。
      • すべての role には PUBLIC role が grant されています。
      • grant された role が持つ privilege も持ちます。
    • user には 1 個以上の role が grant されています。
      • すべての user には PUBLIC role が grant されています。
      • user は current role が持つ privilege を持ちます。
        • 複数の role が grant された user は switch roles で current role を選択します。
    • Role-based Access Control (RBAC) と表現されます。

    role は 0 個以上の privilege を持ちます。

    CREATE ROLE myrole;
    SHOW GRANTS TO ROLE myrole;
    +------------+-----------+------------+------+------------+--------------+--------------+------------+
    | created_on | privilege | granted_on | name | granted_to | grantee_name | grant_option | granted_by |
    |------------+-----------+------------+------+------------+--------------+--------------+------------|
    +------------+-----------+------------+------+------------+--------------+--------------+------------+
    

    暗黙的に grant されている、PUBLIC role object に対する USAGE privilege を含める場合は "1 個以上" と表現できます。

    GRANT ROLE public TO ROLE myrole;
    +----------------------------------------------------------------------------------------------+
    | status                                                                                       |
    |----------------------------------------------------------------------------------------------|
    | Granting role PUBLIC has no effect.  Every user and role has role PUBLIC implicitly granted. |
    +----------------------------------------------------------------------------------------------+
    

    PUBLIC role object は特殊な role であり、通常は USAGE privilege が SHOW GRANTS で確認できます。

    CREATE ROLE myrole2;
    GRANT ROLE myrole2 TO ROLE myrole;
    SHOW GRANTS TO ROLE myrole;
    +-------------------------------+-----------+------------+---------+------------+--------------+--------------+--------------+
    | created_on                    | privilege | granted_on | name    | granted_to | grantee_name | grant_option | granted_by   |
    |-------------------------------+-----------+------------+---------+------------+--------------+--------------+--------------|
    | 2021-09-20 03:11:34.605 -0700 | USAGE     | ROLE       | MYROLE2 | ROLE       | MYROLE       | false        | ACCOUNTADMIN |
    +-------------------------------+-----------+------------+---------+------------+--------------+--------------+--------------+
    

    関連資料:

    role の種類

    Role Hierarchy and Privilege Inheritance

    • system-defined roles
      • ACCOUNTADMIN
        • MFA が有効化されている、少なくとも 2 つの user に grant することが推奨されます。
      • SECURITYADMIN
        • MANAGE GRANTS privilege を持ちます。
        • custom role を create する role としては SECURITYADMIN が推奨されます。
          • custom role (object) の owner は SECURITYADMIN となります。
      • USERADMIN
        • CREATE USERCREATE ROLE privilege を持ちます。
      • SYSADMIN
        • すべての custom role が grant されていることが推奨されます。
        • database や warehouse に関する privilege を持ちます。
      • PUBLIC
    • user-defined custom roles

    上記の USAGE 関係が確認できます。

    SHOW GRANTS ON ROLE securityadmin;
    +-------------------------------+-----------+------------+---------------+------------+--------------+--------------+------------+
    | created_on                    | privilege | granted_on | name          | granted_to | grantee_name | grant_option | granted_by |
    |-------------------------------+-----------+------------+---------------+------------+--------------+--------------+------------|
    | 2021-09-11 02:19:20.752 -0700 | USAGE     | ROLE       | SECURITYADMIN | ROLE       | ACCOUNTADMIN | true         |            |
    +-------------------------------+-----------+------------+---------------+------------+--------------+--------------+------------+
    
    SHOW GRANTS ON ROLE sysadmin;
    +-------------------------------+-----------+------------+----------+------------+--------------+--------------+------------+
    | created_on                    | privilege | granted_on | name     | granted_to | grantee_name | grant_option | granted_by |
    |-------------------------------+-----------+------------+----------+------------+--------------+--------------+------------|
    | 2021-09-11 02:19:20.753 -0700 | USAGE     | ROLE       | SYSADMIN | ROLE       | ACCOUNTADMIN | true         |            |
    +-------------------------------+-----------+------------+----------+------------+--------------+--------------+------------+
    
    SHOW GRANTS ON ROLE useradmin;
    +-------------------------------+-----------+------------+-----------+------------+---------------+--------------+------------+
    | created_on                    | privilege | granted_on | name      | granted_to | grantee_name  | grant_option | granted_by |
    |-------------------------------+-----------+------------+-----------+------------+---------------+--------------+------------|
    | 2021-09-11 02:19:20.750 -0700 | USAGE     | ROLE       | USERADMIN | ROLE       | SECURITYADMIN | true         |            |
    +-------------------------------+-----------+------------+-----------+------------+---------------+--------------+------------+
    

    USERADMINSECURITYADMIN の privilege 一覧です。

    SHOW GRANTS TO ROLE useradmin;
    +-------------------------------+-------------+------------+----------+------------+--------------+--------------+------------+
    | created_on                    | privilege   | granted_on | name     | granted_to | grantee_name | grant_option | granted_by |
    |-------------------------------+-------------+------------+----------+------------+--------------+--------------+------------|
    | 2021-09-11 02:19:20.762 -0700 | CREATE ROLE | ACCOUNT    | XXX12345 | ROLE       | USERADMIN    | true         |            |
    | 2021-09-11 02:19:20.761 -0700 | CREATE USER | ACCOUNT    | XXX12345 | ROLE       | USERADMIN    | true         |            |
    +-------------------------------+-------------+------------+----------+------------+--------------+--------------+------------+
    
    SHOW GRANTS TO ROLE securityadmin;
    +-------------------------------+----------------------+------------+-----------+------------+---------------+--------------+------------+
    | created_on                    | privilege            | granted_on | name      | granted_to | grantee_name  | grant_option | granted_by |
    |-------------------------------+----------------------+------------+-----------+------------+---------------+--------------+------------|
    | 2021-09-11 02:19:20.766 -0700 | APPLY SESSION POLICY | ACCOUNT    | XXX12345  | ROLE       | SECURITYADMIN | true         |            |
    | 2021-09-11 02:19:20.766 -0700 | MANAGE GRANTS        | ACCOUNT    | XXX12345  | ROLE       | SECURITYADMIN | true         |            |
    | 2021-09-11 02:19:20.750 -0700 | USAGE                | ROLE       | USERADMIN | ROLE       | SECURITYADMIN | true         |            |
    +-------------------------------+----------------------+------------+-----------+------------+---------------+--------------+------------+
    

    参考情報: SHOW GRANTS

    補足: ORGADMINACCOUNTADMIN の更に上位の role です。

    SHOW ROLES;
    +-------------------------------+---------------+------------+------------+--------------+-------------------+------------------+---------------+-------+-----------------------------------------------------------------------------------+
    | created_on                    | name          | is_default | is_current | is_inherited | assigned_to_users | granted_to_roles | granted_roles | owner | comment                                                                           |
    |-------------------------------+---------------+------------+------------+--------------+-------------------+------------------+---------------+-------+-----------------------------------------------------------------------------------|
    | 2021-09-11 02:19:20.691 -0700 | ACCOUNTADMIN  | Y          | Y          | N            |                 1 |                0 |             2 |       | Account administrator can manage all aspects of the account.                      |
    | 2021-09-10 11:51:15.004 -0700 | ORGADMIN      | N          | N          | N            |                 0 |                0 |             0 |       | Organization administrator can manage organizations and accounts in organizations |
    | 2021-09-11 02:19:20.668 -0700 | PUBLIC        | N          | N          | Y            |                 0 |                0 |             0 |       | Public role is automatically available to every user in the account.              |
    | 2021-09-11 02:19:20.708 -0700 | SECURITYADMIN | N          | N          | Y            |                 0 |                1 |             1 |       | Security administrator can manage security aspects of the account.                |
    | 2021-09-11 02:19:20.721 -0700 | SYSADMIN      | N          | N          | Y            |                 0 |                1 |             0 |       | System administrator can create and manage databases and warehouses.              |
    | 2021-09-11 02:19:20.737 -0700 | USERADMIN     | N          | N          | Y            |                 0 |                1 |             0 |       | User administrator can create and manage users and roles                          |
    +-------------------------------+---------------+------------+------------+--------------+-------------------+------------------+---------------+-------+-----------------------------------------------------------------------------------+
    

    user に grant して利用します。

    GRANT ROLE orgadmin TO USER admin;
    

    補足: Custom Role の設計例

    privilege と object の関係

    Access Control Framework

    • object を create した user の current role には、その object に対する OWNERSHIP privilege が付与されます。
      • すべての object は owner を持ちます。
      • "user" や "role" も object です。
      • Discretionary Access Control (DAC) と表現されます。
    • OWNERSHIP privilege を持つ role を current role としている user は、その object に対する grant または revoke 操作が可能です。

    object 一覧

    Securable Objects

    • object には階層的な関係が存在します。
    • object を所有する role は常に一つだけ存在します。
      • OWNERSHIP privilege を有します。
      • owner となる role は object に対する全ての privilege を有します。
      • 他の role に object に対する privilege を grant または revoke できます。
    • OWNERSHIP privilege は他の role に移動させることが可能です。

    すべての privilege は object に対応しています。一見すると object と関係のなさそうな CREATE ROLE, CREATE USER, CREATE WAREHOUSE, CREATE DATABASE という名称の privilege が存在しますが、これらに対応する object は ACCOUNT です。

    SHOW GRANTS ON account;
    (または SHOW GRANTS ON account XXX12345;)
    +-------------------------------+--------------------------------+------------+----------+------------+---------------+--------------+------------+
    | created_on                    | privilege                      | granted_on | name     | granted_to | grantee_name  | grant_option | granted_by |
    |-------------------------------+--------------------------------+------------+----------+------------+---------------+--------------+------------|
    | 2021-09-11 02:19:20.780 -0700 | APPLY MASKING POLICY           | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.772 -0700 | CREATE ACCOUNT                 | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.787 -0700 | CREATE CREDENTIAL              | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.784 -0700 | CREATE DATA EXCHANGE LISTING   | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.773 -0700 | CREATE INTEGRATION             | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.769 -0700 | CREATE SHARE                   | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.778 -0700 | EXECUTE MANAGED TASK           | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.777 -0700 | EXECUTE TASK                   | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.771 -0700 | IMPORT SHARE                   | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.779 -0700 | MONITOR EXECUTION              | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.782 -0700 | MONITOR SECURITY               | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.769 -0700 | MONITOR USAGE                  | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.771 -0700 | OVERRIDE SHARE RESTRICTIONS    | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:20.784 -0700 | PURCHASE DATA EXCHANGE LISTING | ACCOUNT    | XXX12345 | ROLE       | ACCOUNTADMIN  | true         |            |
    | 2021-09-11 02:19:21.917 -0700 | CREATE DATABASE                | ACCOUNT    | XXX12345 | ROLE       | APPADMIN      | true         |            |
    | 2021-09-11 02:19:21.918 -0700 | CREATE INTEGRATION             | ACCOUNT    | XXX12345 | ROLE       | APPADMIN      | true         |            |
    | 2021-09-11 02:19:21.916 -0700 | CREATE ROLE                    | ACCOUNT    | XXX12345 | ROLE       | APPADMIN      | true         |            |
    | 2021-09-11 02:19:21.915 -0700 | CREATE USER                    | ACCOUNT    | XXX12345 | ROLE       | APPADMIN      | true         |            |
    | 2021-09-11 02:19:20.766 -0700 | APPLY SESSION POLICY           | ACCOUNT    | XXX12345 | ROLE       | SECURITYADMIN | true         |            |
    | 2021-09-11 02:19:20.766 -0700 | MANAGE GRANTS                  | ACCOUNT    | XXX12345 | ROLE       | SECURITYADMIN | true         |            |
    | 2021-09-11 02:19:20.768 -0700 | CREATE DATABASE                | ACCOUNT    | XXX12345 | ROLE       | SYSADMIN      | true         |            |
    | 2021-09-11 02:19:20.767 -0700 | CREATE WAREHOUSE               | ACCOUNT    | XXX12345 | ROLE       | SYSADMIN      | true         |            |
    | 2021-09-11 02:19:20.762 -0700 | CREATE ROLE                    | ACCOUNT    | XXX12345 | ROLE       | USERADMIN     | true         |            |
    | 2021-09-11 02:19:20.761 -0700 | CREATE USER                    | ACCOUNT    | XXX12345 | ROLE       | USERADMIN     | true         |            |
    +-------------------------------+--------------------------------+------------+----------+------------+---------------+--------------+------------+
    

    補足: ACCOUNT object は特殊であり、MANAGE GRANTS privilege を持つ SECURITYADMIN であっても、例えば CREATE DATABASE privilege を grant することはできません。

    SHOW GRANTS TO ROLE sysadmin;
    → privilege: CREATE DATABASE, granted_on: ACCOUNT
    
    SHOW GRANTS TO ROLE securityadmin;
    → privilege: MANAGE GRANTS, granted_on: ACCOUNT
    
    USE ROLE securityadmin;
    CREATE ROLE myrole;
    GRANT CREATE DATABASE ON ACCOUNT TO ROLE myrole;
    → Grant not executed: Insufficient privileges.
    

    関連資料:

    Access Control Privileges
    GRANT <privileges> … TO ROLE

    User Management

    • 初期パスワードには任意の文字列を指定できます。
      • 弱いパスワードを指定した場合には MUST_CHANGE_PASSWORD を true に設定することが強く推奨されます。
      • 変更後のパスワードに対しては、snowflake が定めるポリシーが強制されます。
    • MINS_TO_BYPASS_MFA は MFA 設定済みの user について、一時的に MFA の利用を強制しないようにするための設定です。
      • MFA 利用を強制するための用途で利用することはできません。

    初期パスワードの変更を強制する設定で user を create する例です。

    CREATE USER myuser
      PASSWORD = 'abc123'
      DEFAULT_ROLE = SYSADMIN
      MUST_CHANGE_PASSWORD = true;
    
    GRANT ROLE SYSADMIN TO USER myuser;
    

    パスワードを連続して 5 回間違えると 15 分間 lock されます。unlock したい場合は以下のコマンドを利用します。

    ALTER USER myuser SET MINS_TO_UNLOCK = 0;
    

    参考資料:

    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    サイバーセキュリティエンジニア

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • Snowflake Task による SQL の定期実行
        Snowflake において、cron のように定期的に SQL を実行する仕組みとして Task が提供されています。基本的な使い方を記載します。 サンプル データベースとテーブルを作成しておきます。 CREATE DATABASE mydb; CREATE TABLE mytbl (c1 DATETIME, c2 STRING); 1分毎に INSERT を実行する task を作成します。W...
        kenken5/16/2024に更新
        いいねアイコン画像0
      • Snowflake におけるセキュリティ関連の機能
        サムネイル画像-5dcf74894d
        Snowflake のセキュリティ関連の機能について記載します。 パラメータ管理 Snowflake における設定値はパラメータとよばれます。設定する対象によって分類すると、以下の三種類が存在します。 Account パラメータ。 Account-level でのみ設定可能です。 Session パラメータ。 Account-level および User-level, Session-level ...
        サマーズサマーズ3/2/2024に更新
        いいねアイコン画像0
      • Looker から Snowflake への OAuth 接続
        サムネイル画像-ce4268940d
        Looker から Snowflake の DB を OAuth 認証で参照する設定例を記載します。 参考資料: Looker / feedbackSnowflake / Configuring OAuth for Snowflake connections Snowflake 内の Looker 用 Role/User/Warehouse/DB 作成 Role と
        suzusuzu1/2/2025に更新
        いいねアイコン画像0
      • Snowflake に対する SSO 設定 (Auth0)
        サムネイル画像-6789888256
        Snowflake に対して、外部の ID 基盤 (IdP; ID Provider) による認証でログインするための設定例を記載します。IdP としては Auth0 を用います。 参考資料: [HOWTO: CONFIGURE AUTH0 AS IDENTITY PROVIDER FOR SNOWFLAKE SINGLE SIGN-ON](https://community.snowflake....
        ふんわりぬこふんわりぬこ1/26/2024に更新
        いいねアイコン画像0
      • Snowflake Custom Role による ACCOUNTADMIN からの権限委譲
        サムネイル画像-aa3f3d6f78
        Snowflake アカウントの運用時において、ACCOUNTADMIN は必要な場合以外は利用しないことが推奨されます。SYSADMIN 直下ではなく ACCOUNTADMIN 直下に位置付けた Custom Role を作成することで、ACCOUNTADMIN が持つ権限を委譲する例を記載します。 関連資料: [Access Control Privileges](https://docs.s...
        クラウド職人クラウド職人5/16/2024に更新
        いいねアイコン画像0