シークレット管理は、アプリケーションの自動化されたコンポーネントの視覚情報を保護し、管理するプロセスです。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
秘密情報管理とは、漏えいした場合、悪意のある者や権限のない者がアプリケーションのインフラストラクチャにアクセスする可能性につながる機密情報を、安全に保管することになります。この文脈での秘密情報は、アプリケーションインフラストラクチャの異なる部分が互いに接続することを可能にする暗号化キー、APIキー、SSHキー、トークン、パスワード、または証明書を指しています。
ユーザーによるアプリケーションへのログインに必要なパスワードは1つだけの場合でも、アプリケーション自体は互いにやり取りが必要となるさまざまな部分で構成されており、そのすべてで資格情報(秘密情報)を必要とします。
特にパスワードを定期的に更新する必要がある場合はなおさら、複数のアプリケーションのパスワードを覚えておくことは、非常に難しくなるのは誰もが承知しているところでしょう。このため、多くの人がパスワードをメモしたり、すべてのアプリで同じパスワードを使うなど、安全でないパスワードの使い方をし始める。
開発者はソフトウェアを作るとき、同じような課題に直面します。アプリケーションを機能させる、あるいは事業が稼働する基盤となるインフラストラクチャは、数百から数百万のキー、トークン、パスワードを必要とすることがあります。これらすべての秘密を管理するのは非常に大きな負担となるため、アプリケーションソフトウェアにハードコードされてしまうことが多くなります。更新されることは一切なく、プレーンテキストでコード化されていることもあり、攻撃者にとって脆弱なままとなります。
アプリケーション開発の文脈では、秘密情報は資格情報として使われるデータを意味します。自分の電子メールにアクセスするためにはユーザー名とパスワードを入力して認証する必要があるのと同じように、電子メールアプリケーション(あるいはあらゆるアプリケーション)の非人間コンポーネントも、アプリケーションの動作のために互いに認証する必要があります。これらのコンポーネントには、API接続、コンテナ、マイクロサービス、スクリプト、関数、自動化ツールなどが含まれます。認証には、資格情報が用いられます。
秘密情報に含まれるのは、次のものが挙げられます:
子供用の積み木(レゴ®など)が、ミニチュアとはいえ頑丈な構造体として成立するために固定され合う様子を想像してみてください。秘密情報というのは、アプリケーションをひとつにまとめる固定機構のようなものです。それがなければ、アプリケーションはバラバラになってしまいます。
互いにロックし合うために常に同じ突起を持つブロックおもちゃとは異なり、秘密情報は定期的に交換する必要があります。秘密情報が長く使われすぎると、攻撃者は総当たりパスワード攻撃によってその秘密を推測できる可能性があります。また、秘密情報は長く使えば使うほど、漏洩しやすくなります。
秘密情報を入れ替える必要性により、秘密情報の安全な管理における複雑さを増加させます。更新後のパスワードを覚えておくことが難しいのと同様に、秘密情報を定期的に入れ替えることも大きな課題となります。十数個のアプリが一つのAPIに依存している場合もあり、APIが新しい資格情報を要求する場合、それらのアプリすべてが秘密情報を更新しなければならなくなります。場合によっては、組織は、どれだけのアプリがそのAPIに依存しているのか、秘密情報が更新されたときに何が壊れるのかさえ把握していない場合があります。
多くの人がパスワードを更新したがらないのと同様、開発チームは効率のために秘密情報の更新を完全に行わないこともあります。秘密情報は変更する必要がないとして、スクリプトや関数にハードコードすることさえあります。
手作業による共有:秘密情報管理ソリューションを持たない開発者は、開発チーム間で秘密情報を共有するために手作業によるプロセスを余儀なくされる可能性があり、文書化の不十分さや安全でない環境への秘密情報の持ち込みにつながる場合があります。
第三者アカウント:社内APIおよびデータベースに外部ユーザーがアクセスする必要がある場合があります。組織の部外者であるため、安全な秘密情報管理を実施することは難しくなります。
クラウドコンピューティング:クラウド環境は、広大ではかないものとなります。新しい仮想マシンインスタンスは絶え間なくサポートサービスにアップグレードされ、そのすべてに独自の秘密情報が必要になります。クラウドアプリケーションはまた、ほぼ無制限の範囲からの幅広いアクセスを可能にし、管理しなければならない資格情報と権限の数を大幅に増加させることになります。
一元管理の欠如:複数のメンバーでの夕食時間を決めるのが難しいように、複数のチームや部門に分散する秘密情報を管理するのは難しくなります。チームごとに秘密情報の文書化方法や保管方法が異なったり、他のチームが使用している秘密情報が見えなかったりすることがあります。
秘密情報管理ツールは、秘密を安全に管理するために必要なすべてのプロセスを自動化することができます。また、アプリケーションのコードとは別の安全な環境に秘密を保存するものです。これにより開発者は、秘密情報をハードコーディングしたり、安全性が損なわれる可能性のあるプレーンテキストで保存したりすることを避けることができるようになります。
Cloudflareは、グローバルネットワーク上でのコードの実行が実現する、拡張性の高い開発プラットフォームを提供しています。Cloudflare Secrets Storeでは、APIトークンからリクエスト認証ヘッダーまで、アプリケーションに必要なシークレットを安全に保管、管理することができます。Secrets Storeの詳細は、こちらからご覧いただけます。
利用開始
Webアプリケーションセキュリティについて
一般的な脅威
VPNリソース
セキュリティ用語集