2022年の開発者セキュリティ目標
2022年1月5日
0 分で読めます2022年の始まりは、新しい年の目標を立てる絶好の機会です。CrossFitの達人になったり、Pelotonで世界記録を更新したりする必要はありません。代わりに、安全な開発者としてのスキルを高める目標を立ててみませんか?
私たちはつい、達成できそうにない目標を立ててしまいがちです。よりよい方法は、現実的な目標を設定すること。そこで、オフィスの椅子に座ったままでも達成できる、開発者セキュリティの目標をご提案します。
2022年に掲げたい開発者セキュリティに関する5つの目標について、詳しく見ていきましょう。
1. コンテナイメージに署名する!
コンテナセキュリティにおいて、多くのコンテナイメージは中間者攻撃(MITM)の危険にさらされています。これは、レジストリから取得したイメージがDockerクライアントに届く前に改ざんされる攻撃です。そのため、Dockerセキュリティのベストプラクティス10選の1つとして、すべてのDockerイメージに署名し、検証することを推奨しています。
イメージ署名には、Sigstoreが提供するシンプルなツールcosignがおすすめです。「コードと一緒にGitHubリポジトリに置いても安全で、CIシステムの一部としてシークレットマネージャーに保存したパスワードを使って復号や署名ができます」。また、イメージの発行元がDocker Notaryを使ってコンテナイメージに署名すれば、パブリックまたはプライベートのレジストリから転送された後もイメージの完全性が保たれていると、利用者は確信できます。開発チームはDocker Content Trustを有効にすることで、プロジェクトで使用する前にすべてのイメージへの署名と検証を必須にできます。これにより、コンテナ化されたアプリケーションを狙うMITM攻撃を防げます。
お忘れなく。Snyk Containerを使えば、既存の開発ワークフロー内でコンテナを直接スキャンし、脆弱性を検出してコンテナセキュリティを強化できます。この目標の達成にも役立ちます!
2. すべてのコンテナを読み取り専用のルートファイルシステムで実行する!
Kubernetesでコンテナを安全に実行するのは、多くのチームにとって容易ではありません。Kubernetesが提供する強力な機能の1つにsecurityContextがあります。これは、すべてのPodおよびContainerマニフェストで利用できるセキュリティ設定です。ただし、十分なセキュリティを確保するには、securityContextを適切に設定する必要があります。
深刻な結果を招く設定ミスの1つが、書き込み可能なルートファイルシステムでコンテナを実行することです。これにより、悪意ある攻撃者が権限を昇格させ、アプリケーションを改ざんできるようになります。securityContextの設定でルートファイルシステムを読み取り専用にすれば、コンテナを攻撃から保護できます。
この目標を続けるためにサポートが必要ですか?Snyk Infrastructure as Codeを使ってKubernetesの設定をスキャンし、設定ミスやその他のセキュリティリスクがないか確認できます。
3. 任意のコマンドを実行するnpmパッケージはインストールしない!
オープンソースのnpmパッケージを使えば、開発者はアプリをより迅速に構築できますが、セキュリティ上の脆弱性が持ち込まれることもあります。Snykが発見した特定の攻撃手法の1つは、任意のコマンドを実行するインストール前後のスクリプトを含むnpmパッケージです。
実行スクリプトを無視することで、パッケージのインストール時に任意のスクリプトが実行されるのを防ぎ、ソフトウェアサプライチェーンを改ざんから守れます。これにより、悪意ある攻撃者が悪用できる攻撃対象領域を最小限に抑えられます。
Snyk Open Sourceを使えば、アプリケーション内のオープンソース依存関係に潜む脆弱性をスキャンできます。間接依存関係の問題も検出できるため、多くの組織に影響を与えた最近のLog4jの脆弱性のような問題も把握できます。依存関係のスキャンは、JavaScript以外にもさまざまな言語のプロジェクトで悪意あるパッケージを見つけるのに役立ちます。
4. 自動コードレビューを通過したPRだけをマージする!
多くの組織にとって、ソフトウェアを迅速に構築してデプロイすることは不可欠です。しかし、だからといってアプリケーションセキュリティで手を抜いてよいわけではありません。中央のソースコードリポジトリにマージする前にすべてのコードをレビューすれば、開発チームはアプリケーションのセキュリティ態勢を大幅に強化できます。
問題は、手動のコードレビューには時間がかかり、レビュー担当者がすべてのセキュリティ問題を見つけられるとは限らないことです。そのため、効果的なアプリケーションセキュリティには、コード変更のたびに自動でコードをスキャンすることが重要です。
GitHubやBitbucketなどのソース管理ツールとのSnykのインテグレーションを利用すれば、プルリクエスト(PR)ごとにコードがマージされる前に脆弱性を自動でスキャンできます。
5. 常にセキュアコーディングを実践する!
セキュリティを開発の早い段階に組み込みたい企業は、まずセキュアコーディング標準を導入できます。セキュアコーディングのベストプラクティスを実践すれば、開発者は脆弱性がアプリケーションのソースコードに入り込む前に、問題を認識して排除できます。
来年、セキュアコーディングのスキルを高めるなら、Snyk Learnを活用してみませんか?新しいセキュリティ教育プラットフォームでは、開発者が自身のコーディングプロジェクトに関連する厳選されたコンテンツを通じて、セキュアコーディングのスキルを向上できます。
セキュリティは既存の開発ワークフローに組み込む必要があります。だからこそ、開発者が作業する場所でセキュリティ教育も受けられるのが理想的です。Snyk Learnを使えば、コーディング中にすぐ実践できるセキュアコーディングの手法を学べます。
2022年をより安全な年にしましょう!
1月下旬には息切れしてしまう意気込んだジョギング愛好家とは違い、これらの目標を何年も続けていただけることを願っています。そうすれば、今後のアプリケーションのセキュリティ態勢を大きく改善できます。
明けましておめでとうございます。今年も安全にお過ごしください!
Snyk DevRel & SecRelチーム



