🌟

ロールについて再度振り返ってみた(Snowflake)

2022/09/25に公開

アクセスコントロールの方法

任意アクセス制御

オブジェクトごとに所有者が存在し、オブジェクト単位でのアクセスを許可します。

ロールベースアクセス制御

オブジェクトにアクセスする権限は、ユーザーに割り当てられたSnowflake ロールに基づいて定義されます。

ロールの種類

  • ORGADMIN(組織管理者): アカウント周りの権限を持ちます。

  • ACCOUNTADMIN(アカウント管理者): システム定義ロール SYSADMIN および SECURITYADMIN をカプセル化するロールになります

  • SYSADMIN(システム管理者): データベース・スキーマ・データウェアハウスを作成するために必要な権限をデフォルトで持っています

  • SECURITYADMIN(セキュリティ管理者): ユーザーとロールを作成することができます。アカウント全体のすべての付与に影響を与えることができます

  • USERADMIN(ユーザー・ロール管理者): ユーザーとロールを作成することができ、作成したオブジェクトのみに影響を与えることができます

  • PUBLIC: 自動的に付与されるものです

各ロールの説明

  • ORGADMIN

    • 組織内の新しいアカウントの作成
    • 組織内のアカウントの使用情報を表示します
  • ACCOUNTADMIN

    • 日常的に使用せずに、アカウント全体で少数のユーザーのみにアクセスを制限する必要があります
    • オブジェクト(データベースやスキーマなど....)をしてはいけません
    • ロール階層の絶対最上位にある必要があります
  • SECURITYADMIN

    • このロールには強力なMANAGE GRANTS権限があるため、ACCOUNTADMIN ロールを任意のユーザーに付与するなど、システム全体の付与を変更できます
    • SECURITYADMIN を使用してユーザーとロールを管理する代わりに、日常的な使用には USERADMIN ロールを使用することを推奨します
    • システムロール階層を通じて、SECURITYADMIN は USERADMIN ロールの権限を継承します (たとえば、USERADMINロールは SECURITYADMIN に付与されます)
  • USERADMIN

    • ユーザーとロールを作成および管理するためのロールです
    • このロールは作成したロールにのみアクセスできるため、ミスが発生した場合に失敗範囲を制限することができます
  • SYSADMIN

    • データベース、スキーマといったオブジェクトを作成および管理するためのロールです
    • このロールはデータベースオブジェクトの最終的な所有者とするべきです(全てのカスタムロールの親ロールとして設定するべきです)

ロールの構造

また少し説明したように、ロールのは親子関係を持つことができます。

Separation of Responsibility

  • SECURITYADMIN と USERADMIN はロールを担当し、SYSADMIN はテーブル、ビュー、およびその他すべてのデータベースオブジェクトを担当します。

  • SYSADMIN はデータベース オブジェクトを所有するロールが付与されています。これは、SYSADMIN がシステム全体のすべてのテーブルとすべてのデータにアクセスできることを意味します。

  • USERADMIN はロールを所有していますが、データへのアクセス権は付与されていません

参考文献

Discussion