説明
限られたクライアントが使う管理 API や B2B サービスでは、クライアント証明書を追加の認証手段にできます。すべての Web App に必須の方式ではないため、サービスの認証要件に応じて選択してください。
App Service はクライアント証明書をアプリケーションに転送しますが、信頼性を代わりに検証するわけではありません。証明書を提示しただけで要求を許可せず、アプリケーションで発行者と信頼チェーン、有効期間、失効状態、許可されたクライアントの識別情報を検証する必要があります。
想定される影響
- 証明書が必要なパスで要求や検証が欠けると、承認されていないクライアントの要求が処理されるおそれがあります。
- 期限切れ・失効済みの証明書を許可し続けたり、更新手順がなかったりすると、不正アクセスや接続停止につながる可能性があります。
対処方法
対応する App Service プランで clientCertEnabled を有効にし、証明書が必須の場合は clientCertMode を Required に設定してください。除外パスとプロトコルの互換性を確認し、HTTPS を使ってください。アプリケーションで証明書を検証して必要な操作だけを許可し、正常な証明書、証明書なし、無効な証明書の要求をテストしてください。発行・更新・失効の手順も維持してください。
例
サイトプロパティの抜粋です。実際のアプリ名、リージョン、証明書に対応する App Service プランなど、その他の入力は別途構成してください。証明書モードとアプリケーションの検証コードは省略しています。
変更前
bicep
resource webSite 'Microsoft.Web/sites@2020-12-01' = {
name: 'webSite'
location: 'location1'
tags: {}
properties: {
enabled: true
}
}
クライアント証明書機能を明示していません。サービスが必要とする認証方式と現在の設定を確認してください。
変更後
bicep
resource webSite 'Microsoft.Web/sites@2020-12-01' = {
name: 'webSite'
location: 'location1'
tags: {}
properties: {
enabled: true
clientCertEnabled: true
}
}
クライアント証明書機能を有効にします。証明書を必須にするかはモードと除外パスで決まり、転送された証明書を検証する処理をアプリケーションに実装する必要があります。