by shigemk2

当面は技術的なことしか書かない

RequestedRegion

IAMの条件でリージョンごとに場合分けできる

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InstanceConsoleReadOnly",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:Export*",
                "ec2:Get*",
                "ec2:Search*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "InstanceWriteRegionRestricted",
            "Effect": "Allow",
            "Action": [
                "ec2:Associate*",
                "ec2:Import*",
                "ec2:Modify*",
                "ec2:Monitor*",
                "ec2:Reset*",
                "ec2:Run*",
                "ec2:Start*",
                "ec2:Stop*",
                "ec2:Terminate*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": [
                        "eu-west-1",
                        "eu-west-2",
                        "eu-west-3"
                    ]
                }
            }
        }
    ]
}   

docs.aws.amazon.com

dev.classmethod.jp

Snowflake 権限 将来の付与

各オブジェクトタイプ(スキーマ、テーブル、ビュー、ストリームなど)に個別に将来の付与を定義する必要があります。詳細については、 既存のデータベースまたはスキーマオブジェクトに対する将来の付与の定義 (このトピック内)をご参照ください。

スキーマ、テーブルだけじゃなくてビューやストリーム、というかスキーマオブジェクト全般に将来の付与ができる。

docs.snowflake.com

Snowflake GRANT <権限> ... TO ROLE なんとなく

セキュリティ保護可能なオブジェクトに対する1つ以上のアクセス権限をロールに付与します。付与できる権限はオブジェクト固有であり、次のカテゴリに分類されます。

  • グローバル権限
  • アカウントオブジェクト(リソースモニター、仮想ウェアハウス、およびデータベース)の権限
  • スキーマの権限
  • スキーマオブジェクト(テーブル、ビュー、ステージ、ファイル形式、 UDFs、およびシーケンス)の権限

アカウントオブジェクトとスキーマオブジェクトについて ここにあるオブジェクト全てにロールを付与することができる。accountObjectPrivileges/schemaObjectPrivilegesのあたりを見て、どんな権限を付与することができるかを知ることができる。 https://miro.medium.com/max/1400/1*8vGwJKX7a-kHeZNY6jMoPg.png

Snowflakeのセールスエンジニアが書いたやつ jeremiahhansen.medium.com

公式ドキュメント docs.snowflake.com

Snowflake アクセス制御 なんとなく

まずは、DACと

任意アクセス制御(DAC): 各オブジェクトに所有者がおり、所有者はそのオブジェクトへのアクセスを許可できます。

RBACについて覚えておく。

ロールベースのアクセス制御(RBAC): アクセス権限がロールに割り当てられ、ロールはユーザーに割り当てられます。

Snowflakeにはオブジェクトなる概念があって、Organizationを一番の親としてウェアハウスだったりユーザーだったりロールだったりで派生していく。 もちろん、プログラミング言語のオブジェクトとは違う概念なので、ちょっと混同しがち。しかし全てのオブジェクトには所有者が割り振られている。 ウェアハウスにも所有者がいるし、テーブルやインテグレーションにも所有者がいる。 https://docs.snowflake.com/ja/_images/securable-objects-hierarchy.png

所有者が割り当てられたら所有者は自動的にテーブル一覧を見れたりテーブルにSELECTしたりテーブルをCREATEしたりできるかというとそうでもなく、GRANT ROLEで適宜ウェアハウスやテーブルに権限を付与してやらないといけない(イメージ図) https://docs.snowflake.com/ja/_images/access-control-relationships.png

ご覧の通りロールは継承できるが、ロールに各種オブジェクトへの権限を付与していく必要がある。カスタムロールはSYSADMINを継承していくのがベストプラクティスのようだ。 https://docs.snowflake.com/ja/_images/system-role-hierarchy.png

以下わかりやすい。 datumstudio.jp

最終的に行き着くドキュメント。 docs.snowflake.com

timer-app

タイマーを表示するだけのシンプルなアプリ。以下特徴。

  • 電子レンジのつまみみたいにドラッグでぐるぐる捻って時間を設定する
    • 常識的な範囲では、時間制限は特にない 2000分くらいは大丈夫だった
  • stay to topで常に前面表示ができる
  • ポーズリスタートは可能
    • 再現できないけどポーズしてリスタートできない時があった

f:id:shigemk2:20220403200348p:plain

f:id:shigemk2:20220403200640p:plain

github.com