ソースコントロールを使用するためのガイドライン
アプリケーションリポジトリ と組み合わせたソースコントロール (Git) は、カスタムスコープ対象のアプリケーションに適した展開方法です。システムアップデートセットの使用は、アプリケーション開発の承認された展開メカニズムでもあります。
ソースコントロールを使用する理由
- 完全な変更履歴
- Git は、誰が、いつ、なぜ行ったかなど、すべての変更の完全で監査可能な記録を提供し、個々のファイルレベルで差分、レビュー、元に戻す機能を使用できます。
- 分岐と並列開発
- 複数の開発者が、競合する更新セットなしに、異なる機能に同時に取り組むことができます。
- コードレビューワークフロー
- プル要求とマージレビューでは、変更が公開される前にピアレビューが実施されるため、エラーとセキュリティの見落としが減ります。
- バージョニングされたリリース
- タグと分岐は アプリケーションリポジトリ バージョンに直接マップされるため、信頼性の高いロールバックとホットフィックスワークフローが可能になります。
- CI/CD 統合
- Jenkins、GitHub Actions、Azure DevOps などの外部 CI/CD ツールは、ServiceNow SDK と CLI を使用してビルド、テスト、および展開をトリガーできます。
システムアップデートセットが適切なのはいつですか?
システムアップデートセット 次の操作を迅速に変更できるように値を保持します。
- グローバルスコープ構成。
- 完全なソースコントロールパイプラインで許容できない遅延が発生する場合の緊急ホットフィックス。
- 従来の開発プラクティスから移行中の組織。
- アプリケーションリポジトリワークフローがネイティブに適用されないServiceNow® Storeアプリケーションまたはプラグインアプリケーションへの変更。
セキュリティガイドライン
- アクセス制御リスト (ACL) による最小特権の適用
- 広範なシステムロールに依存するのではなく、カスタムアプリケーション固有のロールを定義します。パフォーマンスとセキュリティを最適化するために、最初にロール、条件、スクリプトの順に評価順序を使用するように ACL を設定します。
- デフォルトで拒否を使用
- ワイルドカード ACL がデフォルトでアクセスをアドミン専用に制限するように、glide.sm.default_mode プロパティは 拒否 モードのままにしておく必要があります。
- インスタンススキャンを自動的に実行
- システムアップデートセットおよびアプリケーションの展開に対して実行するようにインスタンススキャンを設定します。これにより、空の ACL、過度に寛容なアクセス、コーディング標準違反が本番環境に到達する前に検出されます。
- クロススコープアクセスの保護
- アプリケーションのクロススコープアクセス権限を意図的に構成します。デフォルトですべてのスコープに対してアクセスを開くわけではありません。
- 多要素認証と IP 制限の実装
- 展開を実行するすべてのインタラクティブアカウントでは、マルチファクター認証を使用する必要があります。自動展開のサービスアカウントは、IP 範囲によって制限され、ロールの範囲が厳しく設定されている必要があります。
- すべてを監査
- アクセスアナライザーを使用して、ユーザー、グループ、およびロールの権限を定期的に確認します。監視のために、展開ログとアクセス制御アクティビティを SIEM プラットフォームに転送します。
- コードからデータを分離する
- アプリケーションデータレコードは、 アプリケーションリポジトリ 展開には含まれません。適切なデータ分類を使用して、個別の制御プロセスを通じて参照データとシードデータを管理します。
展開方法の意思決定マトリクス
次の表に、シナリオと推奨される展開方法を示します。
| シナリオ | 推奨するアプローチ |
|---|---|
| 新しいカスタムスコープ対象のアプリケーション | ソースコントロール + アプリケーションリポジトリ + App Engine 管理センター パイプラインと展開、または ReleaseOpsを使用します。 |
| グローバルスコープ構成の変更 | アプリケーションリポジトリを使用してインスタンススキャンアプリケーションまたはグローバルアプリケーションでシステムアップデートセットを使用します。 |
| 緊急本番ホットフィックス | 速度には システムアップデートセット を使用し、その直後にソースコントロール (Git) に戻します。 |
| App Engine Studioの市民開発者アプリ | ガイド付き承認ワークフローで App Engine 管理センター パイプラインと展開 を使用します。 |
| 複数チームのリリース調整: | リリーストレーニングとプレイブック検証でReleaseOpsを使用します。 |