内部仕様について
この wiki を読む前に内部仕様を把握したい場合は [/資料/内部仕様/GROWI Bot/コマンド権限設定周りの仕様] を読むことをお勧めします
経緯
キャッシュの更新や Growi での権限チェック、Proxy での権限チェックなど確認箇所がたくさんあり、今後も確認する時に手順を一から考えるのは時間がもったいないので今回手順をまとめる運びとなった。
事前準備
With proxy で /growi コマンドが使える状態にしておく。relation-test まで行えば OK
キャッシュの更新 確認方法
1. Relation の expiredAtCommands の値が現在時刻から 24 時間以上前の場合
- phpMyAdmin に接続して、Relation テーブルのレコードが一つあるので、その expiredAtCommands カラムの値を
0000-00-00 00:00:00
に更新してください - さらに、
permissionsForSingleUseCommands
の値を{"create": ["hoge-channel"]}
に更新してください - slack 上で
/growi search a
と入力し、結果が帰ってきたら、phpMyAdmin の先ほど更新した値を確認してください。expiredAtCommands
が元の値ではない値になっていれば 半分OK です - そのまま robo 3T を開いて、
SlackAppIntegration
コレクションのドキュメントが一つあるはずなので、そのpermissionsForSingleUseCommands
の値と phpMyAdmin の値が同じになっていることを確認してください。("create": ここの部分
) これが一緒になっていれば完全に OK です
2. GROWI の管理画面から権限の設定を変更した場合
- GROWI の管理画面でコマンドの権限を変更して "Update"
- phpMyAdmin で
Relation
テーブルのレコードを確認して変更した通りになっていれば OK
権限チェック機能 確認方法
ちゃんと権限通りの動作になっているかを確認する。
以下のコマンドそれぞれで行う
- search
- create
- togetter
command アクションがチャネルごとに制限できているかを確認する
proxy 側
- 管理画面の権限設定で Deny を選択
- ワークスペースでコマンドを実行し、拒否されるかを確認する
- 権限設定で Allow specifies を選択。特定のチャンネルを記入し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
- 例. [general, admin] を許可する場合
- それ以外のチャンネル others にてコマンドを実行する
- 拒否されたら OK
GROWI 側
- 管理画面の権限設定で Allow Allにする
- mongo の db を直接書き換える
- 対象の command の値を false に書き換える
Before
After
- 対象の command の値を false に書き換える
Before
- コマンドを実行し、拒否されるかを確認する。 - 現状は slack ワークスペースにエラーメッセージでないので、GROWI server に 403 エラーが確認できたら良い
- 権限設定で Allow specified を選択。特定のチャンネルを記入し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
interactions
Proxy => GROWI
- コマンドの権限を Allow All にする
- コマンドを実行する
- phpmyadmin を直接書き換える
- 対象の command の値を false に書き換える
Before
After
- 対象の command の値を false に書き換える
Before
- 何かしらの interactions を実行する(next share dismiss submit など)
- 拒否されるかを確認する
- 権限設定で特定のチャンネルを設定し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
- 例 [admin, general] を許可する場合
- 上記を設定した上で、admin チャンネルにて コマンドを実行
- ここで、phpmyadmin の対象コマンドの値を false などにする
- 拒否されるかを確認する
GROWI => Proxy
- コマンドの権限を Allow All にする
- コマンドを実行する
- mongo の db を直接書き換える
- 対象の command の値を false に書き換える
- 何かしらの interactions を実行する(next share dismiss submit など)
- 拒否されるかを確認する
- 権限設定で特定のチャンネルを設定し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
- 例 [admin, general] を許可する場合
- 上記を設定した上で、admin チャンネルにて コマンドを実行
- ここで、mongo の対象コマンドの値を false などにする
- 拒否されるかを確認する
- 現状は slack ワークスペースにエラーメッセージでないので、GROWI server に 403 エラーが確認できたら良い
- 拒否されるかを確認する
Commments