GitHub アプリの OAuth 2.0 認証情報の作成 - GitHub アプリケーション脆弱性統合 用の JWT
GitHub アプリケーション脆弱性統合 用の JWT ベアラートークンを使用して、GitHub アプリを統合するには、次の手順を実行します。
- sn_vul.app_sec_manager および admin (Now Platform 内のレコード)。
- GitHub アカウントのタスクに必要なインスタンスロールはありません。
GitHub アプリケーション脆弱性統合 用の GitHub アプリの作成および構成
GitHub アカウントからカスタム GitHub アプリを作成し、インスタンスの GitHub アプリケーション脆弱性統合 で OAuth 2.0 認証をアクティブ化にします。
始める前に
必要なロール:インスタンスロールは不要
このタスクについて
GitHub アカウントから、次の手順を完了します。「」を参照してください。 建物 GitHub アプリ カスタムアプリケーションの作成と構成の手順については、 GitHub 開発者サイトを参照してください。
手順
- GitHub アカウントから、次の場所に移動して GitHub アプリを作成します 開発者設定 > GitHub アプリ.
- [ホームページ URL (Homepage URL)] フィールドに「https://<instance-name>.service-now.com」と入力します。
- [ユーザー認証コールバック URL (User authorization callback URL)] フィールドに、「https://<instance-name>.service-now.com/oauth_redirect.do」と入力します。
- [ユーザーの識別と認証 (Identifying and authorizing users)] セクションで、[ユーザー認証トークンの有効期限 (Expire user authorization tokens)] フィールドの選択を解除します。
- [Webhook] セクションで、[アクティブ] フィールドを選択します。
- [Webhook URL] フィールドに「https://<instance-name>.service-now.com/」と入力します。
- 残りのフィールドは空のままにします (デフォルト)。
-
[リポジトリの権限 (Repository permissions)] セクションで、次の設定を構成します。
コードスキャン 読み込み専用 コンテンツ 読み込み専用 カスタムプロパティ 読み込み専用 Dependabot アラート 読み込み専用 メタデータ 読み込み専用 注:すでに GitHub アプリを使用していて、いずれかの権限を更新する場合は、GitHub アプリのそれらの権限を確認して受け入れる必要があります。アプリに移動して、[構成] > [レビュー要求] > [新しい権限を承認 (Accept new permissions)] を選択できます。 - 残りの権限は [アクセスなし] (デフォルト) のままにします 。
- [イベントのサブスクライブ (Subscribe to events)] セクションで、[展開保護ルール (Deployment protection rule)] オプションを選択します。
- ヘッダーを右クリックして、変更を保存します。
-
新しく作成した GitHub アプリを選択したアカウントにインストールします。
- GitHub アプリの設定ページからアプリを選択します。
- 左のサイドバーで、[アプリのインストール (Install App)] を選択します。
- 正しいリポジトリを含む組織または個人アカウントの横にある [インストール] を選択します。
-
すべてのリポジトリまたは選択したリポジトリにアプリをインストールします。
詳細については、「GitHub アプリのインストール」を参照してください。
-
インストール後、アプリの設定 (歯車アイコン) を選択し、次の情報を書き留めるかメモします。
これらの詳細は、Now Platform インスタンスでアプリケーションレジストリを作成するときに必要です。
- アプリ ID
- クライアント ID
- クライアントシークレット。
- URL のトークンをメモします。これは、インスタンスのトークン URL に入力するトークン ID です。
- ページを下にスクロールし、新しい秘密鍵を生成してマシンに保存します。
GitHub アプリケーション脆弱性統合 の JKS 証明書を生成する
GitHub アプリケーション脆弱性統合 の JWT 認証用に JKS 証明書を生成します。
始める前に
.jks ファイルの生成に使用するパスワード (KeyStore パスワード) を書き留めておく必要があります。
必要なロール:sn_vul.app_sec_manager
手順
-
GitHub アプリの秘密鍵を使用して、CA 署名済み証明書を作成します。
openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095 - 必要な詳細を入力します。
-
GitHub アプリの秘密鍵と CA 署名済み証明書を使用して、PKCS 12 ファイルを作成します。
openssl pkcs12 -export -in <certificate-name>.pem -inkey <file-name>.pem -certfile <certificate-name>.pem -out <PKCS-12-file-name>.p12 - エクスポートパスワードを入力します。
-
JKS ファイルを作成します。
keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS - 宛先とソースのキーストアのパスワードを入力します。
GitHub アプリケーション脆弱性統合 のインスタンスに GitHub Java キーストア証明書を添付する
有効な GitHub Java KeyStore (JKS) 証明書をインスタンスに添付して、JWT ベアラー権限許可トークン認証をアクティブ化します。
始める前に
有効な Java キーストア証明書。
必要なロール:sn_vul.app_sec_manager
手順
- 移動先 すべて > システム定義 > 証明書.
- [新規] を選択します。
-
フォームのフィールドに入力します。
表 : 1. X.509 証明書フォームのフィールド フィールド 説明 名前 レコードを一意に識別する名前。たとえば、My GitHub App Certificate for AVR などです。 有効期限切れを通知する 証明書の有効期限が切れたときに通知するユーザーを指定するオプション。 有効期限切れ前に警告 証明書の有効期限が切れる前に通知を送信する日数。 アクティブ 証明書を有効にするオプション。 タイプ 証明書のタイプを選択するオプション。[Java キーストア] を選択します。 数日中に期限切れ 証明書の有効期限が切れるまでの日数。 キーストアパスワード 証明書に関連付けられたパスワード (ヒント:以前に作成した宛先キーストアのパスワード)。 簡単な説明 証明書の概要です。 - 添付ファイルのアイコンを選択し、JKS 証明書を添付します。
-
[ストア/証明書を検証] を選択します。
有効な証明書ファイルに対して「有効な key_store」メッセージが表示されます。
GitHub アプリケーション脆弱性統合 の GitHub JKS 証明書の JWT 署名キーを作成する
GitHub Java KeyStore 証明書にアサインする JSON Web トークン (JWT) 署名キーを作成します。
始める前に
- admin
- sn_vul.app_sec_manager
手順
- 移動先 すべて > システム OAuth > JWT キー.
- [新規] を選択します。
-
フォームのフィールドに入力します。
表 : 2. JWT キーフォームのフィールド フィールド 説明 名前 JWT 署名キーを一意に識別する名前です。例:My GitHub App JWT Key for AVR。 署名キーストア 前のタスクで添付された有効な JKS 証明書を選択します。 キー ID このフィールドは空白のままにします。 署名アルゴリズム この値は RSA 256 のままにします。 署名キーパスワード 署名キーに関連付けられたパスワード。これは、JKS ファイルの生成に使用したパスワードです。 アクティブ キーを有効にするオプション。 - ページの灰色のヘッダー内の任意の場所を右クリックして、[保存] を選択します。
GitHub アプリケーション脆弱性統合 の GitHub 署名キーの JWT プロバイダーを作成する
GitHub の ServiceNow インスタンスに JSON Web トークン (JWT) プロバイダーを追加します。
始める前に
- admin
- sn_vul.app_sec_manager
手順
- 移動先 すべて > システム OAuth > JWT プロバイダー.
- [新規] を選択します。
-
フォームのフィールドに入力します。
表 : 3. JWT プロバイダーフォームのフィールド フィールド 説明 名前 JWT プロバイダーを一意に識別する名前。例:My GitHub App JWT Provider for AVR。 有効期限の間隔 (秒) JWT プロバイダートークンの有効期間を設定する秒数。この設定はデフォルトのままにしておくことができます。 署名構成 前の手順で作成した JWT キーを選択します。 - フォームヘッダーを右クリックし、[保存] を選択します。
-
[標準要求] 関連リストで、iss 要求の値の GitHub アプリのアプリ ID を入力します。
これは、前の手順で作成した GitHub コンソールの GitHub アプリのアプリ ID です。
- aud と sub の値は空白のままにします (デフォルト)。
- フォームヘッダーを右クリックし、[保存] を選択します。
GitHub を GitHub アプリケーション脆弱性統合 の OAuth プロバイダー (JWT) として登録する
GitHub アプリアカウントの構成中に生成された情報を使用し、GitHub を OAuth プロバイダーとして登録して、インスタンスが OAuth 2.0 トークンを要求できるようにします。
始める前に
- admin
- sn_vul.app_sec_manager
手順
- 移動先 すべて > システム OAuth > アプリケーションレジストリ.
-
[新規] を選択します。
「OAuth アプリケーションの種類は?」というメッセージが表示されます。
- [サードパーティ OAuth プロバイダーに接続します] を選択します。
-
フォームのフィールドに入力します。
表 : 4. アプリケーションレジストリフォームのフィールド フィールド 説明 名前 レコードを一意に識別する名前。たとえば、My GitHub App Provider for AVR と入力します。 クライアント ID GitHub アプリのクライアント ID です。クライアント ID は、前の手順で作成した GitHub コンソールの GitHub アプリケーションから取得されます。この ID は、GitHub の GitHub アプリ構成の [バージョン情報] セクションで利用できます。 アクセス可能 この設定は現在の値のままにします。 クライアントシークレット GitHub アプリのクライアントシークレットです。クライアントシークレットは、前の手順で作成した GitHub コンソールの GitHub アプリケーションから取得されます。この ID は、GitHub の GitHub アプリ構成の [バージョン情報] セクションで利用できます。 アクティブ キーを有効にするオプション。これを選択したままにしておきます。 認証 URL この URL は自動的に生成されます。 トークン URL トークンを取得および更新するためにインスタンスが使用するトークンエンドポイントの場所。GitHub アプリの URL からトークンを入力します。これは、アプリが GitHub にインストールされた後に URL に表示されるトークンです。GitHub の GitHub アプリ構成の [アプリのインストール (Install App)] セクションから、歯車を選択します。トークンは Web ページの URL に表示されます。 - クラウドの場合:https://api.github.com/app/installations/49374672/access_tokens。インストール ID:9374672。
- オンプレミスの場合:https://github-372.secops-eng.com/api/v3/app/installations/7/access_tokens/api/v3。
OAuth API スクリプト 修正済み OAuthUtil スクリプトインクルードを参照できるようにするオプション。[OAuthGitHubJWTHandler] を選択します。 デフォルトの権限許可タイプ アプリケーションレジストリに関連付けられた権限許可のタイプ。[JWT ベアラー] を選択します。 - フォームの残りのフィールドはデフォルトのままにします。
- フォームヘッダーを右クリックし、[保存] を選択します。
- [OAuth エンティティプロファイル] 関連リストまでスクロールして選択し、リストに作成されたデフォルトプロファイルを開きます。
- 以前に作成した JWT プロバイダーを [JWT プロバイダー] フィールドに入力し、フォームを保存します。
- アプリケーションレジストリファイルに戻り、保存します。
- 移動先 キー管理 > モジュールアクセスポリシー > すべて.
-
[暗号化モジュール] フィールドの値として、com_snc_platform_security_oauth_glideencrypter を持ち、スクリプトインクルード:OAuthGitHubJWTHandler を持つポリシーを選択します。
- [結果] フィールドが [追跡] に設定されていることを確認し、変更を保存します。
GitHub アプリケーション脆弱性統合 の認証情報と接続を作成する
アクションを許可するために、以前に作成した GitHub アプリプロバイダーに認証情報レコードを作成します。
始める前に
- admin
- sn_vul.app_sec_manager
手順
- 移動先 認証情報と接続 > 認証情報.
- [新規] を選択します。
- [OAuth 2.0 認証情報] を選択します。
-
[新規] を選択し、フィールドに入力します。
フィールド 説明 名前 レコードの一意の名前。 適用先 リストから [OAuth 2.0 認証情報] を選択します。 OAuth エンティティプロファイル 検索アイコンを選択し、前の手順で作成したエンティティプロファイルを見つけます。 その他のフィールド これらのフィールドはデフォルトのままにします。 -
ページのヘッダー内の任意の場所を右クリックして、[保存] を選択します。
[認証情報] リストが表示されます。
-
作成したレコードを開き、[OAuth トークンの取得] 関連リンクを選択します。
OAuth トークンが正常にインポートされた旨の確認メッセージが表示されます。
- 移動先 認証情報と接続 > 接続.
- [新規] を選択します。
- [HTTP(s) 接続] を選択します。
-
[新規] を選択し、フィールドに入力します。
フィールド 説明 名前 レコードの名前。 アプリケーション 読み取り専用です。 親エイリアス (オプション) 検索アイコンを選択して、リストからアイコンを選びます。 タイプ 接続と資格情報。 接続タイプ HTTP 複数のアクティブな接続をサポート (オプション) 非アクティブ化済み。 デフォルトの再試行ポリシー デフォルトの HTTP 再試行ポリシー 構成テンプレート 空のままにします。 -
[送信] を選択します。
[接続および資格情報エイリアス] リストが表示されます。
-
レコードを開き、[接続] 関連リストタブで [新規] を選択し、HTTP 接続レコードのフィールドに入力します。
フィールド 説明 名前 レコードの名前。 有効 アクティブ化。 認証情報 前の手順で作成した認証情報レコードを選択します。 接続エイリアス レコードが表示されます。 URL ビルダー 非アクティブ化済み。 接続 URL これは、Enterprise のベース URL (https://api.github.com) です。オンプレミスは GitHub エンドポイントの URL です。
MID サーバーを使用 (オプション) オンプレミスには、MID サーバーが必要です。Enterprise ではオプションです。 接続タイムアウト 値を入力します。 -
[送信] を選択します。
[接続および資格情報エイリアス] リストが表示されます。これで、「GitHub アプリケーション脆弱性統合 の構成」の手順を完了する準備ができました。[接続] フィールドに、前の手順で作成した認証情報を入力します。