この記事は秘密を守り、不正アクセスのリスクを減らすのに役立ちます。 このガイダンスに従い、認証情報などの機密情報がコード、GitHubリポジトリ、ログ、継続的インテグレーション/継続的デプロイメント(CI/CD)パイプラインに保存されないようにしましょう。 この記事の指針は、個別のサービス推奨とMicrosoft Cloudセキュリティベンチマーク(MCSB)に基づいています。
この記事は、Microsoftの ゼロ トラスト セキュリティ モデルに合わせて説明します。これには、明示的な検証、最小特権アクセス、侵害の想定が必要です。 Azure Policyの強制を含む規定的なセキュリティ管理については、Microsoft Cloud Security Benchmark v2: Privileged AccessおよびMCSB v2: Data Protectionを参照してください。
シークレットの検出と防止
秘密を守る前に、その存在場所を把握しておく必要があります。 また、曝露が起こる前に防ぐための管理も必要です。
秘密を特定するための監査を行う:パスワード、APIキー、接続文字列、その他の認証情報など、保護が必要な機密情報を特定するためにシステムやアプリケーションを監査します。 定期的な監査は、新しい秘密を在庫に反映し、既存の秘密を適切に管理するのに役立つ。 Safeguardは、一時的なOAuthトークンなどの動的に作成された秘密を、長期秘密と同じ厳密さで管理します。
秘密のハードコーディングを避ける:秘密をコードや設定ファイルに直接埋め込むことは重大なセキュリティリスクを生み出します。 攻撃者があなたのコードベースを侵害すれば、同時に秘密も侵害されます。 代わりに、ソースコードから秘密を隠す環境変数や構成管理ツールを使いましょう。 この方法は偶発的な漏洩のリスクを最小限に抑え、秘密の更新を簡素化します。 シークレットリトリーバルを自動化されたデプロイパイプラインに統合し、シークレットインジェクションパターンを使ってログやバージョン管理での誤った露出を防ぎましょう。 詳細については、「アプリケーション シークレットを保護するための推奨事項」を参照してください。
秘密スキャンツールの導入:誤って漏洩を防ぐために、埋め込まれた秘密を定期的にコードベースでスキャンしましょう。 Azure DevOps Credential ScannerやGitHubのシークレットスキャンなどのツールは、リポジトリ内のシークレットを自動的に検出し、警告してくれます。 これらのツールをCI/CDパイプラインに統合し、継続的なモニタリングを行ってください。 スキャンツールで見つけた秘密は、侵害されたものとして扱いましょう。 セキュリティ体制の健全性を維持するために、直ちに取り消して交換してください。
セキュリティで保護されたストレージと暗号化
シークレットを保護するには、すべての段階でセキュリティで保護されたストレージ メカニズムと適切な暗号化が必要です。
安全な鍵ストアの使用:Azure Key VaultやAzure Key Vault Managed HSMなどのサービスは、アクセス制御、ログ記録、自動回転などのセキュリティ機能を提供します。 このアプローチは秘密管理を一元化し、不正アクセスのリスクを低減します。 高度に機密性の高い秘密情報については、ソフトウェアベースの秘密ストアと比べて強化された保護のために、ハードウェアセキュリティモジュール(HSM)支援のキーストアを使用します。 顧客管理の鍵シナリオでは、最低でもHSM支援のAzure Key Vault Premiumティアを使いましょう。 鍵主権要件にはAzure Key Vault Managed HSMを使いましょう。 Azureの鍵管理サービスの概要と選択すべきガイダンスについては、「Azureのキー管理」および「適切な鍵管理ソリューションの選び方」をご覧ください。
静止状態および輸送中の秘密を暗号化:Azure Key Vaultはエンベロープ暗号化によって秘密を安全に保存します。鍵の暗号化鍵がデータの暗号化鍵を暗号化し、さらにセキュリティ層を提供します。 HTTPSなどの安全な通信プロトコルを使って、アプリケーションとキーボールト間でデータを暗号化しましょう。 Azureでは、さまざまなサービスがAES 256暗号化を用いて静止時の暗号化を実装しています。 TLSとMACsecは転送中のデータを保護します。 詳細は「 静止時および転送中の暗号化」をご覧ください。
ネットワーク分離を実装する: ファイアウォールとネットワーク セキュリティ グループ を構成して、キー コンテナーへのアクセスを制限します。 信頼されたアプリケーションやサービスのみが秘密にアクセスできるようにしましょう。 このアプローチは攻撃対象を最小限に抑え、不正アクセスを防ぐのに役立ちます。 複数のキーボールトを使って、異なるコンポーネントごとに隔離境界を作ることを検討してください。 攻撃者が一つのコンポーネントを侵害すると、そのコンポーネントは他のシークレットや全体のワークロードを制御できません。
アクセス制御と ID
セキュリティを維持するためには、シークレットにアクセスできるユーザーと、アクセスできるものを管理することが重要です。
管理型IDの活用:Azureの管理型IDは、コードに認証情報を保存せずにアプリケーションがAzureサービスに安全に認証できる方法を提供します。 AzureリソースのマネージドIDを有効にし、Azure Key Vaultやその他のサービスに安全にアクセスし、秘密を手動で処理する必要を減らすことができます。 この方法は秘密作成を最小限に抑え、プラットフォームが認証情報を管理するため、潜在的な漏洩の発生リスクを減らします。
詳細なアクセス制御を適用する: シークレットに詳細なアクセス制御を適用することで、最小限の特権の原則に従います。 Azureの役割ベースのアクセス制御(Azure RBAC)を使って、特定の秘密にアクセスできるのは認可されたエンティティだけであることを確認しましょう。 定期的にアクセス許可を確認して更新し、不正アクセスを防ぎます。 シークレットへのアクセスを管理するために、ユーザー、管理者、監査人といった明確な役割を実装します。 この慣行により、信頼できるアイデンティティのみが適切な権限レベルを持つことが保証されます。 詳細については、Azure Key Vault RBACガイドをご覧ください。
シークレット ライフサイクル管理
シークレットには、作成から廃止まで、ライフサイクル全体を通じて継続的な管理が必要です。
シークレットを定期的にローテーションする: シークレットは時間の経過と同時に漏えいや露出の影響を受けやすくなります。 不正アクセスのリスクを減らすために、秘密情報を定期的にローテーションしましょう。 Azure Key Vaultで特定のシークレットをローテーションできます。 自動で回転できない秘密については、手動で回転させるプロセスを確立し、使われなくなったら削除しましょう。 シークレットローテーションを自動化し、シークレット管理に冗長性を組み込んで、ローテーションがサービスの可用性を妨げないようにしましょう。 コードにリトライロジックや並行アクセスパターンを実装し、ローテーションウィンドウ中の問題を最小限に抑えましょう。
秘密を安全に配布する:秘密を配布する際は、組織内外で安全に共有しましょう。 安全な共有を目的としたツールを使用し、災害復旧計画に秘密の復旧手順を取り入れましょう。 攻撃者が鍵を侵害または漏洩した場合は、すぐに再生成してください。 利用者ごとに異なるキーを使い、アクセスパターンが似ていても、鍵を共有するのではなく別々のキーを使いましょう。 この方法は鍵の管理と取り消しを簡素化し、他の利用者に影響を与えずに漏洩した鍵を取り消すことができます。
監視およびログ記録
継続的な監視により、不審な活動を検出し、コンプライアンス要件をサポートします。
- アクセスの監視とログ記録: シークレット管理システムのログ記録と監視を有効にして、アクセスと使用状況を追跡します。 Key Vaultのログ、Azure Monitor、Azure Event Gridを使って、秘密に関連するすべての活動を監視してください。 監視は誰が秘密にアクセスしたかを把握し、不審な行動や潜在的なセキュリティインシデントの検出に役立ちます。 秘密へのアクセスを検査・検証するための詳細な監査記録を維持し、個人情報盗難を防ぎ、否認を防ぎ、不要な露出を減らすのに役立ちます。
シークレット処理に関するサービス固有のガイダンス
個別のサービスは、秘密を守るためのベストプラクティスやガイダンスがより多いかもしれません。 その例は次のとおりです。
- API Management:Key Vault 連携でAzure API Managementポリシーで名前付き値を使用してください
- App Service: App Service と Azure Functions に Key Vault リファレンスを使用する
- Application Gateway:Azureポータルを使ってApplication GatewayのTLS終了を設定する
- Automation: Azure Automation で資格情報を管理する
- Azure AI Foundry: Azure Key Vault を使用して Foundry Tools アプリケーションを開発する
- Azure App Configuration: ASP.NET Core アプリで Key Vault 参照を使用する
- Azure Bot Service: Azure Bot Service静止データの暗号化
- Azure Center for SAP solutions: Azure Center for SAP solutions のデプロイ用にネットワークを準備する
- Azure Communication Services: アクセストークンの作成と管理
- Azure Communications Gateway: シークレットの作成と格納
- Azure Container Apps: Azure Container Apps でシークレットを管理します
- Azure Cosmos DB: Azure Cosmos DB 用にカスタマー マネージド キーを構成する
- Azure Database for PostgreSQL - Flexible Server: 顧客マネージド キーを使用したデータ暗号化
- Azure Databricks: Azure Databricks での Key Vault との統合
- Azure DevTest Labs: Azure DevTest Labs のラボ仮想マシンでユーザー割り当てマネージド ID を有効にする
- Azure Event Hubs: Azure Event Hubs のデータを保存時に暗号化するためのカスタマーマネージドキーを設定します
- Azure Front Door: Azure Front Door secrets
- AKS 上の Azure HDInsight: Azure Key Vault リソースの前提条件を作成する
- Azure Information Protection: Azure Information Protection に対する Key Vault サポート
- Azure Kubernetes Service (AKS): CSI シークレット ストア
- Azure Machine Learning: Azure Machine Learning ジョブで認証資格情報のシークレットを使用する
- Azure Managed Applications: Azure Managed Applications のデプロイ時に Key Vault シークレットにアクセスする
- Azure Pipelines: Azure Pipelines でシークレットを保護する
- Azure Service Bus: Service Bus を Service Connector と統合する
- Azure SignalR Service: URL テンプレート設定における Key Vault シークレットの参照
- Azure Spring Apps: Azure Key Vault を Service Connector と統合する
- Azure Stack Edge: Azure Key Vault を使用して Azure Stack Edge のシークレットを管理する
- Azure Stack Hub: シークレットをローテーションする
- Azure Web PubSub: カスタム証明書を追加する
- バックアップ: 顧客管理キーを使って金庫を暗号化する設定
- Data Factory: 資格情報をAzure Key Vaultに保存する
- ExpressRoute: ExpressRoute DirectのMACsec暗号化を設定
- 関数: App Service と Azure Functions で Key Vault の参照を使用する
- Key Vault: Azure Key Vaultのシークレットについて
- Logic Apps: Logic Apps 標準的なアプリ設定
- Microsoft Purview:Microsoft Purviewにおけるソース認証のための認証情報
- Service Fabric: Service Fabric アプリケーションの KeyVaultReference サポート
- SQL Server on Azure VMs: Azure VMs 上の SQL Server 向けに Azure Key Vault との統合を構成する
- ストレージ:
Azure Storage
次のステップ
セキュリティ リスクを最小限に抑えることは、共同責任です。 積極的にワークロードの安全対策を講じましょう。 詳細については、「クラウドにおける共同責任」を参照してください。
- Azure を使用してクラウド ソリューションを設計、デプロイ、管理するときに使用するセキュリティのベスト プラクティスの詳細については、「Azure セキュリティのベスト プラクティスとパターン」を参照してください。
- 包括的な秘密情報や特権アクセスガイダンス、Azure Policyマッピングについては、Microsoft Cloudセキュリティベンチマークv2:特権アクセス制御を確認してください。
- ID とシークレットを保護するための Microsoft の社内セキュリティ ベスト プラクティスであり、Microsoft が組織にも推奨しているMicrosoft Secure Future Initiativeについてご確認ください。
- アイデンティティのゼロ トラスト導入を調べて、アイデンティティとアクセス管理のゼロ トラスト原則を実装するためのガイダンスを確認します。