Skip to main content

コードでのログイン情報の漏洩を防ぐ

学習の目的

この単元を完了すると、次のことができるようになります。

  • 組織で秘密の漏洩が問題になる理由を挙げる。
  • 誤って秘密が漏洩するのを防ぐ方法を説明する。

ログイン情報の漏洩

特に一般的なデータセキュリティ侵害の 1 つが、開発したコードに保存された機密データによるものです。このデータ (ログイン情報、暗号化鍵など) が悪意のある相手に渡ると攻撃者が組織の機密データを侵害できてしまうため、このようなデータを保護する方法を知っておく必要があります。

開発者には、クラウド、アプリケーション、その他のツールなどのテクノロジースタックにアクセスするコードとスクリプトに対する責任があります。一般にこのようなインスタンスにはすべてログイン情報が必要であり、そのログイン情報が漏洩しないように保護することが不可欠です。 

周期的な開発に取り組んでいる開発グループの多くはストレッチ目標日を設定していて、仕事を速く進めなければならないというプレッシャーがあります。開発者は互いにコラボレーションしてプロジェクトを完了するための手段として GitHub などのオープンソースコードリポジトリを使用することがあります。 

コードリポジトリではログイン情報の漏洩のリスクが発生します。これは、多忙な開発者が手間を省くためにコード内にログイン情報をハードコピーすることがあるためです。そうすると、コードが公開されたときに組織のログイン情報がパブリックドメインで参照できてしまいます。コードをコミットして転送すると、簡単に削除することができません。また、バージョン管理システムで侵害されたコードのコミットを削除できるとしても、削除する前に別の開発者やサービスがすでに侵害されたコードのコピーを取得している可能性があります。 

つまり、バージョン管理の操作方法を知っているユーザーまたはコードのコピーを作成したユーザーが、過去のデータからそのログイン情報を取得して、アクセスできることになります。安全なコーディングの規則や手法がなければ、開発者は不正なユーザーにログイン情報を漏洩してしまい、コアシステムへのアクセスを許すことになる可能性があります。 

これは、開発者が新しい機能をお客様に届けようと急いでいるときに起きやすく、よくある間違いです。コードには絶対にログイン情報を含めないように細心の注意を払う必要があります。 

判読可能なユーザー名とパスワードのログイン情報が表示されている Web サイトのログ。

漏洩したログイン情報

GitHub、Bitbucket、SourceForge といったソフトウェア追跡サービスは、何年もの間、漏洩したログイン情報の問題の軽減に取り組んできました。一部のサービスでは、ユーザーがアクセストークンを公開リポジトリに転送すると、不正なアクションの実行に使用されないように、警告した上でそのトークンを取り消すものもあります。それでも、リポジトリにアプリケーションプログラムインターフェース (API) トークンとキーを誤って含めることはよくあります。

皆さんの組織もおそらくこの問題を認識しています。そのため、セキュリティチームは、公開リポジトリやクラウドインスタンスにあるコード内でユーザー ID、API キー、アクセストークン、データベースファイル、その他のキーが誤って公開されていないかを定期的に確認する必要があります。 

ログイン情報の漏洩を防ぐ方法

開発プロセスに安全な開発ライフサイクルを組み込むのがベストプラクティスであるのと同じように、コーディングプロセスのすべてに手順にログイン情報管理ハイジーンを設定することがベストプラクティスです。コードをログイン情報の漏洩から保護するために次の 2 つの重要な点を覚えておいてください。 

  • 組織が承認した秘密管理サービスにのみに秘密を保存する。
  • 絶対にコード内に秘密を含めない。

「組織で秘密管理を実装する」トレイルの後続の「公開キーインフラストラクチャと暗号化」モジュールと「キー管理」モジュールで、秘密を保持するキーを管理するためのベストプラクティスや、転送中や保存中の秘密を保護する方法について学習します。

まとめ

このモジュールでは、強力なパスワードを作成して保護する方法と、パスワードマネージャーの利点について学習しました。また、特権アクセス管理を実行するときに最小権限の原則を実装する方法や、長期的にユーザーとアカウントを監視することの重要性についても学習しました。 

これで、「Organizational Secrets (組織の秘密)」モジュールで確認した情報に加えて、アクセスログイン情報などの組織の秘密を保持するために何が必要かについて理解を深めることができました。次のモジュールの「Public Key Infrastructure and Encryption (公開キーインフラストラクチャと暗号化)」では、転送時と保存時にデータを保護する方法について学習します。Trailhead のサイバーセキュリティの学習ハブでは、サイバーセキュリティのベストプラクティスをさらに詳しく学んだり、実務でセキュリティに携わる人から話を聴いたりできます。 

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる