ビジネスにとって重要なものを保護します。
コンテナー、Kubernetes、クラウド、シークレットを扱う際には、考慮すべきことがたくさんあります。 ID とアクセス管理に関するベスト プラクティスを採用して関連付け、さまざまなツールを選択して実行する必要があります。
あなたが開発者であっても、システム管理の専門家であっても、環境を安全に保つためのツールを適切に選択していることを明確にする必要があります。アプリケーションが正しく動作するには、適切な構成データにアクセスする必要があります。ほとんどの構成データは機密ではありませんが、一部の構成データは機密にしておく必要があります。これらの文字列はシークレットとして知られています。
GitHub にまだ秘密があるとは言わないでください。
信頼性の高いアプリケーションを構築している場合、機能によって、秘密や保管しているその他の種類の機密情報へのアクセスが必要になる可能性があります。
これらの分泌物には次のものが含まれる場合があります。
- APIキー
- データベースの資格情報
- 暗号化キー
- 機密性の高い構成設定 (電子メール アドレス、ユーザー名、デバッグ フラグなど)
- パスワード
ただし、これらの秘密を安全に管理することは、後で困難な作業であることが判明する可能性があります。そこで、開発者とシステム管理者向けのヒントをいくつか紹介します。
パッチ適用機能の依存関係
関数で使用されているライブラリを追跡し、継続的に監視して脆弱性にフラグを立てることを常に忘れないでください。
APIゲートウェイをセキュリティバッファとして採用
関数をユーザー操作に正確に公開しないでください。クラウド プロバイダーの API ゲートウェイ機能を活用して、機能の上に別のセキュリティ層を組み込みます。
転送中のデータを保護して検証する
安全な通信チャネルとして HTTPS を活用し、リモート ID を保護するために SSL 証明書を検証してください。
アプリケーション コードの安全なコーディング ルールに従ってください。
ハッキングするサーバーがない場合、攻撃者はアプリケーション層に注意を向けるため、コードを保護するために細心の注意を払ってください。
安全なストレージで秘密を管理する
機密情報は簡単に漏洩する可能性があり、適切な秘密管理ソリューションの導入を怠ると、古い認証情報はレインボー テーブル攻撃の対象になりやすくなります。アプリケーション システム、環境変数、またはソース コード管理システムにシークレットを保存しないように注意してください。
協同組合の世界における鍵の管理は、知識やリソースの不足などの理由により、非常に困難を伴います。代わりに、一部の企業は暗号化キーやその他のソフトウェア シークレットを、それらを使用するアプリケーションのソース コードに直接埋め込み、シークレットが漏洩するリスクをもたらします。
既製のソリューションがあまりにも少ないため、多くの企業が独自の機密管理ツールを構築しようと努めてきました。要件に合わせて活用できるものをいくつか紹介します。
保管庫
HashiCorp Vault は 、シークレットを安全に保存し、アクセスするためのツールです。
厳格なアクセス制御を維持し、包括的な監査ログを記録しながら、シークレットへの統一インターフェイスを提供します。これは、ユーザーのアプリケーションとベースを保護して、侵害時の表面スペースと攻撃時間を制限するツールです。
ポリシーに基づいてシークレットへのアクセスを可能にする API を提供します。 API のユーザーはすべて、表示を許可されているシークレットを確認し、そのシークレットのみを表示する必要があります。
Vault は、GCM で 256 ビット AES を使用してデータを暗号化します。
Amazon DynamoDB、Consul などのさまざまなバックエンドにデータを蓄積できます。 Vault は、監査サービスのローカル ファイル、Syslog サーバー、またはソケットへの直接のログ記録をサポートしています。 Vault は、動作したクライアント、クライアントの IP アドレス、アクション、およびアクションが実行された時刻に関する情報をログに記録します。
起動/再起動には、常に 1 人以上のオペレーターが Vault の封印を解除する必要があります。これは主にトークンで動作します。各トークンは、アクションとパスを制限する可能性があるポリシーに与えられます。 Vault の主な機能は次のとおりです。
- データを保存せずに暗号化および復号化します。
- Vault は、AWS や SQL データベースなどの一部の操作に対してオンデマンドでシークレットを生成できます。
- 複数のデータセンターにわたるレプリケーションを可能にします。
- Vault には、シークレット失効に対する保護が組み込まれています。
- アクセス制御の詳細を含むシークレット リポジトリとして機能します。
AWS シークレットマネージャー
このリストに AWS が含まれることを期待していました。そうでしたか?
AWS にはあらゆる問題に対する解決策があります。
AWS Secrets Manager を使用すると、 データベース認証情報、API キー、その他のパスワードを迅速にローテーション、管理、取得できます。 Secrets Manager を使用すると、サードパーティのサービスやオンプレミスで AWS クラウド機能にアクセスするために必要なシークレットを保護、分析、管理できます。
Secrets Manager を使用すると、きめ細かい権限を使用してシークレットへのアクセスを管理できます。 AWS Secrets Manager の主な機能は次のとおりです。
- 暗号化キーを使用して保存時のシークレットを暗号化します。
- また、シークレットを復号化し、TLS 経由で安全に送信します。
- Secrets Manager API の呼び出しに役立つコード サンプルを提供します。
- 可用性を向上させ、シークレット使用の待ち時間を短縮するためのクライアント側キャッシュ ライブラリがあります。
- Amazon VPC (Virtual Private Cloud) エンドポイントを構成して、トラフィックを AWS ネットワーク内に維持します。
鍵のない金庫
Akeyless Vault は 、統合されたエンドツーエンドの秘密管理 SaaS ベースのプラットフォームであり、証明書の自動化や暗号化キーを含む、静的および動的の両方のあらゆる種類の資格情報を保護します。さらに、レガシー環境、マルチクラウド環境、ハイブリッド環境にわたるすべてのリソースへのリモート アクセス (ゼロトラスト) を保護する独自のソリューションを提供します。
Akeyless は、内蔵の FIPS 140-2 認定および特許取得済みテクノロジーを使用して秘密とキーを保護します。顧客の秘密や鍵についてはまったく知識がありません。
主な機能は次のとおりです。
- マルチリージョンおよびマルチクラウド サービス上でクラウドネイティブ アーキテクチャを活用することにより、組み込みの高可用性 (HA) と災害復旧 (DR) を提供する、世界中で利用可能な SaaS ベースのプラットフォームです。
- 高度なシークレット管理は、パスワード、認証情報、API キー、トークンなどの静的および動的シークレットの安全な保管庫を提供します。
- Akeyless Vault を使用すると、すべてのサーバー、アプリケーション、ワークロードへのあらゆる種類のシークレットのプロビジョニングと注入が可能になり、すべての DevOps および CI/CD、構成管理、オーケストレーションなどの IT プラットフォームへの接続を可能にするさまざまなプラグインが提供されます。 Kubernetes や Docker などのツール。
次の理由により、実稼働までの時間が最速になります。
- SaaS – 導入、インストール、メンテナンスは必要ありません
- 既知の既存のシークレット リポジトリからのシークレットの自動移行によるインスタント オンボーディング
プラットフォームはさらに 2 つの柱をサポートします。
- 統合認証とジャストインタイム アクセス資格情報を提供するゼロトラスト アプリケーション アクセス (別名リモート アクセス)。これにより、境界のないアプリケーションとインフラストラクチャを保護できます。
- Encryption as-a-Service では、FIPS 140-2 認定の高度なアプリレベル暗号化を適用することで、お客様は機密性の高い個人データとビジネス データを保護できます。
キーウィズ
Square Keywhiz は 、インフラストラクチャ シークレット、GPG キーリング、および TLS 証明書とキー、対称キー、API トークン、外部サービス用の SSH キーなどのデータベース資格情報をサポートします。 Keywhiz は、シークレットを処理および共有するためのツールです。
Keywhiz の自動化により、サービスに不可欠なシークレットをシームレスに配布および設定できるようになります。これには、一貫した安全な環境が必要です。 Keywhiz の主な機能は次のとおりです。
- Keywhiz Server は、シークレットを収集および管理するための JSON API を提供します。
- すべてのシークレットはメモリのみに保存され、ディスクに再保存されることはありません。
- UI は AngularJS で作成されているため、ユーザーは UI を検証して使用できます。
腹心
Confidant は 、使いやすいストレージと秘密への安全なアクセスを維持するオープンソースの秘密管理ツールです。 Confidant は、DynamoDB に追加方式でシークレットを保存し、Fernet 対称認証暗号化を使用して、すべてのシークレットの変更ごとに一意の KMS データ キーを生成します。
これは、エンドユーザーがシークレット、サービスに対するシークレットの形式、および変更の記録を効率的に管理できるようにする AngularJS Web インターフェイスを提供します。機能には次のようなものがあります。
- KMS認証
- バージョン管理されたシークレットの保存時の暗号化
- シークレットを管理するための使いやすい Web インターフェイス
- サービス間の認証、またはサービス間で暗号化されたメッセージの受け渡しに適用できるトークンを生成します。
SOPS
SOPS を紹介しましょう。これは私が最近発見した素晴らしいツールです。これは、YAML、JSON、ENV、INI、BINARY などの形式をサポートする暗号化されたファイル エディターです。一番良いところ? AWS KMS、GCP KMS、Azure Key Vault、age、PGP を使用してファイルを暗号化できます。
さて、ここからが興味深いところです。 PGP キーのような暗号化キーに直接アクセスできないマシンで作業していると想像してください。心配ない! SOPS では、主要なサービス機能を利用できます。ソケットを転送することで、リモート マシンに保存されている暗号化キーへの SOPS アクセスを許可できます。まるで自分専用のポータブル GPG エージェントを持っているようなものです。
SOPS は、データ キーの暗号化と復号化のためにクライアント/サーバー モデルで動作します。デフォルトでは、プロセス内でローカルキーサービスを実行します。クライアントは、gRPC およびプロトコル バッファーを使用して、暗号化または復号化リクエストをキー サービスに送信します。心配しないで;これらのリクエストには、公開キーも秘密キーも含まれていません。
現在、キー サービス接続には認証や暗号化が存在しないことを強調しなければなりません。セキュリティを確保するために、SSH トンネルなどの他の手段を介して接続を認証および暗号化することを強くお勧めします。
しかし、待ってください、まだあります! SOPS は、制御された環境でのファイル アクセスを追跡するための監査ログを生成できます。有効にすると、タイムスタンプ、ユーザー名、復号化されたファイルなどの復号化アクティビティが PostgreSQL データベースに記録されます。かなりきれいですよね?
さらに、SOPS は、復号化されたシークレットを新しいプロセスに渡すための 2 つの便利なコマンド、exec-env と exec-file を提供します。前者は出力を子プロセスの環境に挿入し、後者は出力を一時ファイルに保存します。
ファイル拡張子によって、SOPS で使用される暗号化方式が決定されることに注意してください。特定の形式でファイルを暗号化する場合は、復号化のために元のファイル拡張子を必ず保持してください。これは互換性を確保する最も簡単な方法です。
SOPS は、hiera-eyaml、credstash、スニーカー、パスワード ストアなどのツールからインスピレーションを得ています。これは、PGP 暗号化ファイルを手動で管理する手間を省く素晴らしいソリューションです。
Azure Key Vault
Azure でアプリケーションをホストしますか? 「はい」の場合、これは良い選択になります。
Azure Key Vault を 使用すると、ユーザーはクラウド アプリケーションのすべてのシークレット (キー、証明書、接続文字列、パスワードなど) を特定の場所で管理できます。これは、すぐに使える Azure のシークレットのオリジンとターゲットと統合されています。 Azure 以外のアプリケーションでもそれをさらに活用できます。
また、暗号キーをオンプレミスではなくクラウドに保存することでクラウド アプリケーションの遅延を短縮し、パフォーマンスを向上させることもできます。
Azure は、データ保護とコンプライアンスの要件の達成に役立ちます。
Docker の秘密
Docker シークレットを使用する と、クラスターにシークレットを簡単に追加できます。このシークレットは、相互認証された TLS 接続上でのみ共有されます。その後、データは Docker シークレットでマネージャー ノードに到達し、内部の Raft ストアに自動的に保存され、データが確実に暗号化されます。
Docker シークレットを簡単に適用してデータを管理し、アクセスできるコンテナーに同じデータを転送できます。アプリケーションがシークレットを使用するときにシークレットが漏洩するのを防ぎます。
ノックス
Knox は 、キーの手動管理と監査証跡の維持に関する問題を解決するために、ソーシャル メディア プラットフォーム Pinterest によって開発されました。 Knox は Go で書かれており、クライアントは REST API を使用して Knox サーバーと通信します。
Knox は、キーの保存に揮発性の一時データベースを使用します。データベースに保存されているデータは、AES-GCM とマスター暗号化キーを使用して暗号化されます。 Knox は Docker イメージとしても利用できます。
ドップラー
新興企業から大企業まで、何千もの組織が Doppler を使用して、環境、チーム メンバー、デバイス間でシークレットとアプリ構成の同期を維持しています。
電子メール、zip ファイル、git、Slack を介して秘密を共有する必要はありません。チームが共同作業できるようにすることで、シークレットを追加した後すぐにそれを取得できるようになります。 Doppler はプロセスを自動化し、時間を節約することでリラックスした気分をもたらします。
頻繁に使用されるシークレットへの参照を作成すると、一定の間隔で 1 回更新するだけですべての作業が完了します。サーバーレス、Docker、またはその他の場所でシークレットを使用すると、Doppler が連携します。スタックが進化してもそのまま維持されるため、数分以内に稼働させることができます。
Doppler CLI は、プロジェクト ディレクトリに基づいてシークレットを取得することについてすべてを知っています。何か変更があった場合でも心配する必要はありません。壊れた変更は、ワンクリックで、または CLI および API 経由で簡単にロールバックできます。
Doppler を使用すると、一生懸命ではなく賢く作業し、秘密管理ソフトウェアを無料で入手できます。さらに多くの機能と利点を求める場合は、1 シートあたり 6 ドル/月のスターター パックをご利用ください。
結論
上記の内容で、アプリケーションの資格情報を管理するのに最適なソフトウェアについて理解していただければ幸いです。
次に、デジタル資産のインベントリと監視ソリューションを検討します。