アプリケーションセキュリティ(AppSec)は、ソフトウェア開発ライフサイクル(SDLC)全体にセキュリティを組み込み、自動化することによって定義されます。 これには、ソースコード管理ツール (SCM) や CI/CD パイプラインに加えて、コードが最初に作成される IDE や CLI などの開発環境が含まれます。 

開発チームは、AppSecチームをゲートキーパーであり、ビルドをブロックするための開発目標の妨げと考えることがありますが、これは全体像ではありません。 結局のところ、AppSecには、脆弱性が本番環境に到達するのを防ぐだけではありません。 それどころか、AppSecチームは、開発者が安全でないコードコミットがビジネスに与える影響を真に理解し、開発およびコードレビュープロセスの自然な部分としてセキュリティチェックを導入できるようにする機会を得ることができます。 

Get the Application Security Best Practices [Cheat Sheet]

This 6-page guide goes beyond basics — it’s a deep dive into advanced, practical AppSec strategies for developers, security engineers, and DevOps teams.

TLです。DR: CI/CD を介してパッケージをコーディング、ビルド、リモート リポジトリにプッシュする前の計画段階にある場合でも、クラウド上でエフェメラル コンテナをスピンアップする前であっても、各コミット、ビルド、またはデプロイの一部としてセキュリティを重視することが不可欠です。 

この記事では、開発ワークフローと DevOps ワークフローのあらゆる部分にセキュリティを織り込むためのガイドラインとベスト プラクティスについて概説し、簡単に導入できる実用的な手法に焦点を当てます。

コード、オープンソースの依存関係、コンテナイメージ、またはコードとしてのインフラストラクチャの脆弱性、設定ミス、公開されたシークレットのスキャンから、SCM、CI/CDパイプライン、クラウド環境での安全な認証および承認ポリシーの確保まで、リリースサイクルを妨げることなく攻撃者の一歩先を行くために必要なものについて説明します。AppSecのベストプラクティス

1. シフト レフト: SDLC の早い段階でセキュリティを統合する

従来、アプリケーション・セキュリティは、本番環境にデプロイする前の最後のハードルと考えられていました。 このアプローチは、脆弱性がライフサイクルの後半に発見された場合、土壇場での消火活動につながり、多くの場合、配信とリリースのサイクルに悪影響を及ぼしました。 

シフトレフトの哲学 それよりも、セキュリティプラクティスをできるだけ早い段階で、問題の特定と修正にかかる時間が最も安い開発者のIDE、CLI、プルリクエストワークフローに移行することを提唱しています。 何よりも、シフトレフトは、コードの記述やプルリクエストのレビュー中(さらには計画段階)でセキュリティを強調し、初日からプロセスの一部にしています。

静的アプリケーション・セキュリティ・テスト(SAST)ツール(Checkmarx、Cycode、Jitなど)を統合することにより、 ソフトウェア・コンポジション解析(SCA)ツール Wiz Code をプルリクエストや CI ワークフローに組み込むように、開発フェーズでは、コードが本番サーバーに到達するよりもはるかに早く、ハードコードされた認証情報や安全でない検証などの脆弱性を発見できます。 

SCAはアプリケーションをスキャンします' 既知の脆弱性の依存関係。 SCAツールを自動化して脆弱な依存関係を監視し、フラグを立てることで、サプライチェーンのセキュリティを可視化できます。 Wizコードたとえば、 は、すべての依存関係のセキュリティ グラフを提供し、それをスキャンして脆弱性に関する詳細情報を提供します。 

Figure 1: Security findings across code repositories

図 1 は、複数のリポジトリの Wiz Code スキャンと、それぞれの脆弱性スキャン結果を示しています。 たとえば、最初のリポジトリには、827 件の「重大」、57 件が高、12 件が中程度の脆弱性があるとします。 この情報があれば、エンジニアは潜在的な修正を探し始め、修正が簡単で安価に問題に早期に対応することが容易になります。

2. 安全なコーディング手法を採用する

セキュアなコーディング手法では、攻撃者の立場で考える必要があります。脅威の状況がますます高度になるにつれて、明らかなミスを探すだけでは不十分です。 そのため、安全なコーディング手法には、次のような今日の最も一般的な攻撃ベクトルに対するアプリケーションの回復力を確保することが含まれます クロスサイトスクリプティング および SQL インジェクション。

1つのコアプラクティスは 入力検証. 効果的な入力検証とは、デフォルトで信頼しないことを意味します 任意 外部入力、およびそれらの起源に関係なく、それぞれを検証します。 入力検証プロセスを導入することで、入力がアプリケーションやデータベースと対話する前に検証、サニタイズ、またはエスケープされるという安心感が得られます。 

同様 出力エンコーディング は、クロスサイトスクリプティングを防ぐためのWeb開発の手法です。 これは、潜在的に有害なユーザー入力や特殊文字 ( <, >, &など)Web ページにレンダリングする前に、安全な形式に復元します。 

たとえば、ユーザーが次のように入力すると、 <script>アラート('XSSの')</script>、出力エンコーディングがないと、この入力はブラウザ上でプレーンな JavaScript として実行され、アラートが表示されたり、さらに悪いことに、攻撃者が悪意のあるスクリプトを実行できるようになる可能性があります。 出力エンコーディングでは、入力は次のようにレンダリングされます。 `&lt;スクリプト&gt;アラート('XSSの')&lt;/スクリプト&gt;`であるため、ブラウザーはコードとしてではなくテキストとして表示します。

もう一つ重要なヒントは? ハードコードされたシークレット、API キー、パスワードをコードで使用しないでください。 代わりに、 環境変数 又は シークレット管理サービス AWS Secrets ManagerやHashiCorp Vaultのように、機密情報を安全に管理および使用します。

安全なコードを書く習慣を身につけると、最初は少し遅くなるかもしれませんが、長期的には大きな利益をもたらします。 恥ずかしいセキュリティ侵害を回避し、技術的負債を削減し、よりスムーズなデプロイを確保しながら、新たな脅威に対するコードベースの回復力を維持することができます。 Wiz Codeのようなツールは、公開されているシークレットを検出し、実行中のクラウド環境でシークレットが見つかった場合の開発者の所有権コンテキストを含む修復ワークフローの提案にも役立ちます。

3. 強力な認証および承認戦略を実装する

実証済みの 認証 そして 認可 戦略は、アプリケーションやインフラストラクチャと対話できるユーザーと対象を制御するために重要です。 アプリケーション、外部サービス、およびユーザーがアプリケーションのさまざまな領域にアクセスする最新のアーキテクチャでは、承認戦略の実装が不十分な場合、特権昇格、不正アクセス、およびデータ侵害につながる可能性があります。 これらの問題を回避するには、 最小特権の原則 (PoLP) と ロールベースのアクセス制御 (RBAC) を使用して、アクターがシステムと対話する方法を制御します。

最小特権の原則とは、ユーザー、サービス、またはアプリケーションに最小限の権限を付与することを意味します。 タスクの実行に必要な権限のみを持つ必要がありますが、それ以上の権限は持っていません。 さまざまな権限から始めるのではなく、必要最小限の権限から始めて、繰り返し権限を追加します。 たとえば、データベースからデータを読み取るマイクロサービスには、絶対に必要な場合を除き、書き込みアクセス許可を付与しないでください。

ロールベースのアクセス制御(RBAC)は、サービスやアプリケーションごとに権限を管理するのではなく、事前定義されたロールを割り当てることで、PoLPを次のレベルに引き上げます。 ほとんどのクラウド環境では、RBACは各ロールに個別のアクセスポリシーを使用および割り当てることで実現されるため、環境全体で複数のサービスやアプリケーションの権限を簡単に管理できます。

4. DASTによるランタイムの脆弱性の再確認

デプロイ前のセキュリティをさらに強化するには、 動的アプリケーション・セキュリティ・テスト (DAST) を統合テストまたはステージング中に使用します。 DASTツールは、実行中のアプリケーションに対する実際の攻撃をシミュレートして、エラー処理、設定ミス、SASTが検出できないオープンエンドポイントなどの脆弱性を見つけます。 

5. データ保護と暗号化を重視

すべてのアプリケーションがデータを生成しますが、ビッグデータの台頭により、データ量が管理不能に感じることがあります。 ユーザーの資格情報、財務諸表、医療データ、個人データなど、すべて固有の手荷物が伴います。 また、機密情報の保護を怠ると、最も確立されたビジネスでさえ壊滅的な打撃を受ける可能性があることは誰もが知っています(データ侵害、コンプライアンスの問題、顧客の信頼の喪失を考えてみてください)。

最も重要なデータを保護するには、保存データを暗号化することから始めます。 つまり、ユーザーの機密情報をデータベース、ファイルシステム、またはオブジェクトストレージに保存するときは、暗号化が有効になっていることを確認してください。 最新のクラウドプロバイダーのほとんどは、ワンクリックでデータを暗号化する機能を提供しています。

次に、サービス、クライアント、データベース間でデータを移動するたびに、転送中のデータもトランスポート層セキュリティ (TLS) を使用して暗号化されていることを確認します。 これは、Webトラフィック、API呼び出し、マイクロサービス通信にとって特に重要です。 TLSは、誰かがネットワークトラフィックを傍受した場合でも、データが暗号化され、読み取れないことを保証します。

6. 安全なコンテナイメージ、IaC、サーバーレスコンポーネント

コンテナとサーバーレスアプリケーションは、恩恵であると同時に課題でもあります。 俊敏性、柔軟性、拡張性を提供する一方で、攻撃対象領域も拡大するため、細心の注意を払う必要があります。 

安全なイメージとコンテナを構築することは、本番環境でアプリケーションの整合性とセキュリティを維持するために不可欠です。 まず、脆弱性のない基本イメージからイメージを構築します。 Alpine イメージやディストリビューションレス イメージなど、最小限で信頼できるベース イメージを使用すると、攻撃対象領域が大幅に最小限に抑えられます。

クラウドコンピューティングの採用により、サーバーレスアーキテクチャはインフラストラクチャ管理の多くを抽象化しました。それでも、開発者は安全なサーバーレスアプリケーションを実行する責任があります。 AppSecチームは、ビルドパイプラインに組み込まれた標準化されたツールを使用して、コードの脆弱性、不十分な構成管理、不適切なアクセス制御などの固有の課題に対処する必要があります。 たとえば、Wiz Codeのようなツールは、IaCコードをスキャンして設定ミスがないか確認し、クラウド上のサーバーレスコンポーネントを保護するのに役立ついくつかのルールを検証するのに役立ちます。

7. 継続的な監視とインシデント対応の強化

セキュリティは、アプリケーションを運用環境にデプロイした後も停止しません。 実際、そこからまったく新しい一連の課題が始まります。 ライブシステムを継続的に監視することで、アプリケーションとインフラストラクチャが実行中に安全であることが保証され、潜在的な脅威をリアルタイムで検出するのにも役立ちます。 

セキュリティ情報およびイベント管理 (SIEM) ツールに投資して、ログを集計し、アプリケーション内の異常なパターンや疑わしいアクティビティを特定するのに役立ちます。 AWS CloudTrail や Azure Monitor などの一般的なクラウドネイティブ サービスは、API 呼び出し、ユーザー アクション、リソースの変更を追跡できますが、New Relic や Datadog などのソリューションは、ハイブリッド環境全体でより包括的な監視を提供します。

Figure 2: Wiz cloud detection and response (CDR)

SIEM情報を インシデント対応戦略を使用すると、本番環境の脅威に迅速かつ効果的に取り組むことができます。 Wiz CDRの は、クラウドワークロードの疑わしいアクティビティを継続的に監視し、クラウドプロバイダーからインテリジェンスを収集して、展開する脅威をプロアクティブに検出して対応する優れたソリューションです。

8. 定期的なセキュリティ監査と侵入テストの実施

アプリケーションがどれほど安全であっても、新しい脆弱性が忍び寄る可能性は常にあります。 定期的なセキュリティ監査と侵入テストは、セキュリティ対策が長期にわたって効果的であることを保証するために不可欠なプラクティスです。

セキュリティ監査では、システム、コードベース、インフラストラクチャを包括的に分析し、すべてがセキュリティのベストプラクティスとポリシーに準拠しているかどうかを確認します。 監査は通常、設定ミス、古いライブラリ、過度に寛容なアクセス制御、および時間の経過とともに導入された可能性のある脆弱性を特定することに焦点を当てます。

ペネトレーションテストは、アプリケーション、ネットワーク、またはインフラストラクチャに対する実際の攻撃をシミュレートし、攻撃者が悪用する可能性のある脆弱性を調査するものです。 ペネトレーションテスターは、既知の問題をスキャンするだけでなく、攻撃者の立場で考え、システムの侵害、権限の昇格、データの流出など、独創的な方法を探します。 定期的な侵入テストは、ロジックの欠陥やビジネスロジックの脆弱性など、自動スキャナーが見逃す可能性のある脆弱性を明らかにするのに役立ちます。

テイクアウト

アプリケーションセキュリティ(AppSec) SDLCの最後に追加する余裕のあるものではありません。 これは、コードのコミットから本番環境のデプロイまで、すべてのフェーズでベイクする必要があります。 セキュリティのシフトレフト、安全なコーディング標準の適用、承認のベスト プラクティスの採用など、上記の手順を実施することで、アプリケーションのセキュリティ体制を大幅に改善し、データ侵害や脆弱性のリスクを軽減できます。 最も重要なことは、AppSecは、回復力と信頼性に優れたシステムを構築できるようにすることです。

AppSecの取り組みをシンプルにし、自動化したいとお考えの方には、 Wizコード お手伝いします。 Wiz Codeは、開発ワークフローに統合するために構築された包括的なセキュリティプラットフォームであり、コード、OSの依存関係、シークレットからコンテナ、Infrastructure as Code、VCSおよびCI/CDパイプラインのセキュリティ体制まで、すべてのレイヤーのセキュリティリスクをリアルタイムで可視化します。

Wiz Codeがアプリケーションのセキュリティをどのように強化できるかを確認する準備はできましたか?試みる

Wiz Codeの緊密な統合 CI/CDパイプラインを使用すると、本番環境に到達する前に重大な問題を検出して優先順位を付けることができ、自動スキャン、ランタイムの洞察、コンテキストに応じた優先順位付けにより、チームはAppSecアラートのノイズを排除し、最も影響の大きいリスクに集中できます。 Wiz Codeは、AppSecの取り組みを一元化し、統合することで、開発者が安全なアプリケーションとインフラストラクチャを大規模に構築し、すべてのスプリントでスピードを維持できるようにします。

Wiz Codeがアプリケーションのセキュリティをどのように強化できるかを確認する準備はできましたか? 試みる アプリケーションのセキュリティ体制を改善するためのWiz Code 今日。

Secure your cloud from code to production

Learn why CISOs at the fastest growing companies trust Wiz to accelerate secure cloud development.

Wiz がお客様の個人データをどのように取り扱うかについては、当社のプライバシーポリシーをご確認下さい: プライバシーポリシー.