■ はじめに
https://dk521123.hatenablog.com/entry/2021/10/06/141323
で、Airflow で Slack へ通知する際に、 Access Token(アクセストークン)が必要だったのでメモる。 簡単かなーっと思ったら意外と調べたりするのに時間が掛かった、、、
目次
【1】トークンの種類 1)ボットトークン - Bot tokens - 2)ユーザトークン - User tokens - 3)アプリレベルトークン - App-level tokens - 【2】トークン生成および接続テスト 1)Slackアプリの作成 2)トークン生成 3)接続テスト 【3】セキュリティ設定 1)トークンを特定の IP 範囲に制限する 2)トークンのローテーションと期限切れ設定
【1】トークンの種類
Slack アプリで使用できるトークンは以下の通り。 1)ボットトークン - Bot tokens - 2)ユーザトークン - User tokens - 3)アプリレベルトークン - App-level tokens -
https://slack.dev/bolt-js/ja-jp/tutorial/getting-started
1)ボットトークン - Bot tokens -
* ボットユーザーに関連づけられ、1 つのワークスペースでは 最初にそのアプリをインストールした際に一度だけ発行される * xoxb で始まるトークン
2)ユーザトークン - User tokens -
* アプリをインストールまたは認証したユーザーに成り代わって API メソッドを呼び出すことができる * xoxp で始まるトークン
3)アプリレベルトークン - App-level tokens -
* 全ての組織を横断できる * xapp で始まるトークン
【2】トークン生成および接続テスト
1)Slackアプリの作成
[1] 以下のサイトを開き、「Create an App」ボタン押下
[2] 「From scratch」を選択 [3] 以下を入力し、「Create App」ボタン押下 + App Name : 任意(今回は「HelloWorld」を入力) + Pick a workspace to develop your app in:対象のワークスペースを選択
2)トークン生成
[1] [OAuth & Permissions]-[Permission] を選択 [2] Scopes で「chart:write (メッセージの送信)」を追加する => 「You’ve changed the permission scopes your app uses. ...」って表示 [3] 「Install App」を選択し、「Install to Workspace」を選択 [4] 「許可する」ボタン押下 => トークン(xoxp-XXXXXX)をメモしておく
3)接続テスト
[1] 以下にアクセス
https://api.slack.com/methods/chat.postMessage/test
[2] 以下を入力し、「Test Method」ボタン押下 + Or, provide your own token:メモったトークン(xoxp-XXXXXX) + channel(Required):送りたいチャンネル + text:送りたいメッセージ(今回は「こんにちは世界」) [3] Slackで対象チャンネルに送ったメッセージが 表示されていることを確認
【3】セキュリティ設定
1)トークンを特定の IP 範囲に制限する
* 以下の公式サイトを参照のこと。
https://api.slack.com/lang/ja-jp/securing-your-slack-app
2)トークンのローテーションと期限切れ設定
https://api.slack.com/authentication/best-practices#rotation
より抜粋 ~~~~~~~~~~~~~~~~~~~~~ Rotating and expiring tokens => トークンのローテーションと期限切れ Unfortunately, programmatic rotation and automatic expiration of tokens is not yet available for Slack apps. => 残念ながら、Slackアプリのための トークンのプログラムでのローテーションと自動的な期限期限切れは、 まだ利用できません Revoke tokens manually with auth.revoke. auth.revokeのよる手動的なトークンの無効 ~~~~~~~~~~~~~~~~~~~~~
https://api.slack.com/authentication/rotation#turn
より抜粋 ~~~~~~~~~~~~~~~~~~~~~ Turn on token rotation => トークンのローテーションONにする Token rotation is enabled for your app via the OAuth & Permissions section in the sidebar of your app config. => あなたのアプリについて、あなたのapp configのサイドバーにある 「OAuth & Permissions」ページ経由で、トークンのローテーションを有効にする Warning: => 警告 token rotation may not be turned off once it's turned on. => トークンのローテーションは、ONにしてすぐに、 OFFにならないかもしれない You'll want to be sure you're prepared to refresh your token within 12 hours before you turn on the toggle. ~~~~~~~~~~~~~~~~~~~~~ * app configに「token_rotation_enabled」って設定があるので 将来的には使えるだろうが、現状は、「true」に変えても 以下のエラーになる(redirect URLを設定すればできる?) ~~~~~~ Fix errors to save changes (line 13) Token rotation requires valid oauth redirect urls ~~~~~~
app config:Manifest例
_metadata: major_version: 1 minor_version: 1 display_information: name: HelloWorld oauth_config: scopes: user: - chat:write settings: org_deploy_enabled: false socket_mode_enabled: false token_rotation_enabled: false
参考文献
https://qiita.com/ykhirao/items/3b19ee6a1458cfb4ba21
https://zenn.dev/mokomoka/articles/6d281d27aa344e
https://note.com/npaka/n/n4bcb38a1ea74
https://api.slack.com/lang/ja-jp/hello-world-bolt
関連記事
Slack ~ Incoming Webhooks ~
https://dk521123.hatenablog.com/entry/2021/10/15/091842
Apache Airflow ~ 通知あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/10/06/141323