AWS DevDay2023 Tokyo ポリシー(Policy)
いろいろなポリシーが存在すると思うが、その実現方法はものによってバラバラ
記述
テストもしたい
管理
スケールしても大丈夫にしたい
適用
ライフサイクル管理したい
となると、コードでやりたい = Policy as Code
提唱: HashiCorp, Palo Alto, ...
Fine-Grained: 細かで柔軟な、というイディオム
RBAC(アールバック)
Role-Basd Access Control
ABAC(エーバック)
Attribute-Based Access Controll
後発、RBACだけで解決できないケースのために登場してきている
PBAC(ピーバック)
Policy-Based
今回、OPAを前提に話をするやつ
OPA(Open Policy Agent)
オープンなポリシー管理ツール、K8sでよくつかわれる
CNCFに寄贈されて、graduated project
専用宣言型言語、Regoで記述する
JSONの入力を Rego で書いたコードで評価(true/false)する
サーバ上のデーモンとして動く
コンテナならサイドカーパターンで動かせる
K8s' GateKeeper
Goならライブラリとしても動く
Rego
変数は再代入不可で、遅延評価もある(rspec の let みたいな感じかねvvani.icon
Input
評価対象のデータ
DATA
環境変数みたいなやつかな
K8sでの使い方
Admission Controller としてOPAを動かす
やべーコンテナを動かせないようにするとか、リソース制限のないやつを動かさないように・・みたいな制御ができる
Envoyでの使い方
External Authorization フィルタを使って認可処理をOPAに移譲する
EnvoyもOPAもサイドカーとして動くので、それらが協調するイメージ
ポリシーはConfigMapでやるより、OPAの Bundle 機能で定期的に更新ができるような構成にするのがおすすめ
AWS SAM での使い方
Conftest というCLIツール(OPAの派生)でCIとかでチェックする
古いランタイムのリソースを排除する、みたいなことができる
いろいろな言語をターゲットにチェックできる
応用が効きそうに見える。おもしろそうvvani.icon
SQL/GraphQL での使い方
SQLをASTにして、JSONに変換してしまうことでチェック対象にできる
Where句がないSQLはダメ!みたいなのができる
AWSのマネージドサービスとしてのRBACは・・・?
Amazon Verified Permissions
最近(2023/06/13)GAした
IdPとの連携ができる、CognitoのIdentityに対して認可するとかできる
トークンの検証とかもいい感じにやってくれる
自分でなにかを動かさなくてもよい(デーモンもサイドカーも不要)
記述言語は Ceder という独自のやつ
言語そのものはAWSがオープンソースにしている
PARCモデル
Principal(実行者
Action(行動の種類
Resource(対象
Context