O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

アプリケーション認証をManaged Identityでセキュアに

2019年6月26日のJazug Night で登壇させていただいた際のスライドです。

  • Entre para ver os comentários

アプリケーション認証をManaged Identityでセキュアに

  1. 1. アプリケーション認証を Managed Identityで セキュアに ~ 大事な情報を守るために明日からできること ~ 株式会社ネクストスケープ 島田 真菜子
  2. 2. 自己紹介 島田 真菜子 (@motozetto) 株式会社ネクストスケープ 仕事 ・Azureの導入コンサル ・SIいろいろ 好きなこと ・フットサル ・しぇあぽの観察
  3. 3. 本日のおはなし Managed Identityって何? 実際に 使ってみる 環境への適用 使う上での 注意 まとめ
  4. 4. 本日のゴール Managed Identityがどのようなものかが分かる Managed Identityを利用すると何がうれしいのか分かる Managed Identityを使えるようになる
  5. 5. Managed Identityって 何?
  6. 6. マネージド ID とは (Microsoft Docs からの抜粋)  Azure AD で自動的に管理される ID を Azure サービスに提供する機能  この ID を使用すれば、コードに資格情報を 追加しなくても、Azure AD の認証をサポート するさまざまなサービス (Key Vault を含む) に対して認証を行うことができる [Azure リソースのマネージド ID とは] https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview
  7. 7. アプリケーションから 他サービスへ接続する方法  Web AppからSQL DBへの認証は? ? Web App Subscription Azure AD SQL DB
  8. 8. 環境ごとの構成ファイル? ソースコード上に資格情報が丸出し
  9. 9. Web Appアプリケーション設定? 漏洩リスクは残る + 運用コストもかかる
  10. 10. 課題 「資格情報漏洩のリスク」 + 「運用コスト」
  11. 11. 資格情報なんて 持たなければいいの では?
  12. 12. 資格情報を持たずに どうやって?
  13. 13. 「あなたを知っている人」 には資格情報は不要! ↓ 顔パス 現実世界では・・・
  14. 14. 接続元リソースの Managed IDの有効化 = 「顔パス」化 システムに置き換えると・・・
  15. 15. Managed IDを使った接続の流れ Web App Azure AD SQL DB ⓪-1 Managed IDの 有効化 ⓪-2 接続先リソースへの 権限付与 ①認証リクエスト ②認証 + トークン発行 ③トークンで サービスへ接続
  16. 16. Q:Azure AD 認証が 使えない場合は? • Cosmos DB • Table Storage • Azureの外
  17. 17. A: Azure Key Vault を使う Web App Azure AD ①認証リクエスト ②認証 + トークン発行③トークンで Key Vaultへ接続 Key Vault ④保存されている 資格情報を渡す ⑤資格情報で Cosmos DB接続 Cosmos DB Azure Key Vault を使用してサーバー アプリのシークレットを管理する (Microsoft Learn)
  18. 18. Managed Identity って何?  Azure AD で自動的に管理される ID を Azure サービスに提供する機能  この ID を使用すれば、コードに資格情報を 追加しなくても、Azure AD の認証をサポート するさまざまなサービス (Key Vault を含む) に対して認証を行うことができる  Azure サブスクリプションを対象とした Azure AD の無料の機能 [Azure リソースのマネージド ID とは] https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview • 顔パス化 • 情報漏洩のリスクなし • Azure ADで管理できる範囲 (それ以外はKey Vaultで) • 無料で使える
  19. 19. 実際に使ってみる
  20. 20. たった3ステップ Jazugnight06SampleWebApp Azure AD jazug-db/jazug-db 2. Managed IDの 有効化 3. SQL DB への 権限付与 1. アプリケーション コードの変更
  21. 21. Demo Azure Web App から Azure SQL Databaseへの接続を Managed ID を使うように実装する
  22. 22. 1. Microsoft.Azure.Services.AppAuthentication SDKをインストールする 2. SqlConnectionを生成する箇所のコードを変更 接続先サービス毎のリソースID : https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure- resources/services-support-managed-identities#azure-services-that-support-azure-ad- authentication Step1 アプリケーションコードの変更
  23. 23. Step2 Web AppでManaged IDを有効化
  24. 24. Step2 Web AppでManaged IDを有効化 az webapp identity assign --resource-group <resource group name> --name <app name>
  25. 25. Step3 SQL Databaseへの権限を付与
  26. 26. Step3 SQL Databaseへの権限を付与 CREATE USER <AAD Group> FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER <AAD Group>; ALTER ROLE db_datawriter ADD MEMBER <AAD Group>; ALTER ROLE db_ddladmin ADD MEMBER <AAD Group>; GO
  27. 27. 接続文字列から資格情報を削除 するのを忘れずに!  Managed ID を有効にした Web App  [設定] > [構成] > [接続文字列]
  28. 28. まずはやってみましょう!  手順はここを参考に! https://docs.microsoft.com/ja-jp/azure/app-service/app- service-web-tutorial-connect-msi
  29. 29. 環境への適用
  30. 30. リソース作成時に 一連の設定を自動化 できないか?
  31. 31. できます!
  32. 32. Azure リソースデプロイの 汎用パイプラインを作る ⇐ ARM Template ⇐ DevOps の Azure CLI タスク ⇐ 開発者のコードで!アプリケーションコードの変更 SQL Databaseへの権限を付与 Web AppでManaged IDを 有効化 Azure DevOps パイプラインの作成
  33. 33. 既存の運用環境には さすがに適用できない?
  34. 34. 段階的にやってみる
  35. 35. 「Azure Policy」 を使って Managed ID無効リソースの洗い出し ⇐ Managed IDが付与 されていない場合 (条件) ⇐ 監査する (アクション)
  36. 36. 「Azure Policy」 を使って Managed ID無効リソースの洗い出し
  37. 37. 使う上での注意
  38. 38. 以下の点に注意!  クロスディレクトリはサポートしていない  サブスクリプションのディレクトリを移動した際は、 IDを付与しなおす必要がある  セキュリティ境界は Managed IDのアタッチ先リソース  Active Directory Authentication Library (ADAL)/MSAL では利用できない  すべてのサービスで利用できるわけではない [既知の問題] https://docs.microsoft.com/ja-jp/azure/active- directory/managed-identities-azure-resources/known-issues
  39. 39. Managed IDが サポートされているサービス サービス名 システムアサイン ユーザーアサイン Azure Virtual Machines 使用可能 プレビュー Azure 仮想マシン スケール セット 使用可能 プレビュー Azure App Service 使用可能 プレビュー Azure Blueprint プレビュー プレビュー Azure Functions 使用可能 プレビュー Azure Logic Apps プレビュー - Azure Data Factory V2 使用可能 - Azure API Management 使用可能 - Azure Container Instances Linux: プレビュー Windows: - Linux: プレビュー Windows: - Azure リソースのマネージド ID をサポートする Azure サービス 2019/06/26 現在
  40. 40. Azure AD認証が サポートされているサービス サービス名 リソース ID Azure Resource Manager https://management.azure.com/ 使用可能 Azure Key Vault https://vault.azure.net 使用可能 Azure Data Lake https://datalake.azure.net/ 使用可能 Azure SQL https://database.windows.net/ 使用可能 Azure Event Hubs https://eventhubs.azure.net プレビュー Azure Service Bus https://servicebus.azure.net プレビュー Azure Storage BLOB と キュー https://storage.azure.com/ 使用可能 Azure Analysis Services https://*.asazure.windows.net 使用可能 Azure AD 認証をサポートしている Azure サービス 2019/06/26 現在
  41. 41. まとめ
  42. 42. 本日のゴール(再掲) Managed Identityがどのようなものかが分かる Managed Identityを利用すると何がうれしいのか分かる Managed Identityを使えるようになる
  43. 43. Managed Identityが どのようなものかが分かる Azure ADと信頼関係を結ぶことによって、 Azureリソース上のアプリケーションが「顔パス」で Azure AD内の他のリソースにアクセスできるように するためのもの
  44. 44. Managed Identityを利用すると 何がうれしいのか分かる アプリケーション側での資格情報管理なし! つまり、漏洩リスクなし!
  45. 45. Managed Identityを 使えるようになる  たった3ステップで使えるようになる  Managed IDの有効化  接続先サービスへの権限付与  アプリケーションコードの変更  環境への適用は  ARM Template + Azure CLI で自動化のパイプラインを作成  既存環境へは Azure Policy を使って段階的に適用  ただし、使えないサービスもあるので注意  Managed ID がサポートされていないサービス  Azure AD 認証がサポートされていないサービス (Key Vaultとの組合せで使う)
  46. 46. ご清聴 ありがとうございました!

×