Skip to main content
Azureサブスクリプションを接続して、CloudThinkerエージェントがコスト分析、コンプライアンス監査、Microsoft Azure全体のインフラ管理を実行できるようにします。 Azureの認証はサービスプリンシパル(アプリ登録 + クライアントシークレット + テナントID)で行います。プリンシパルのロール割り当てが各エージェントの読み取り範囲を決定します。

前提条件

  • OwnerまたはUser Access Administrator権限を持つAzureサブスクリプション。
  • Microsoft Entra IDでアプリ登録を作成する権限。
  • アカウントに登録済みの多要素認証。セキュリティ既定値は、多要素認証なしのアプリ登録をブロックします。
ReaderとCost Management Readerがあれば、読み取り専用のエージェントはすべて動作します。エージェントにAzureリソースを変更させる場合のみ書き込みロールを追加してください。

セットアップ

1

サブスクリプションを選択する

2

サービスプリンシパルを作成する

出力をコピーしてください。passwordは一度しか表示されません。
3

コストへのアクセスを追加する

4

CloudThinkerで接続を追加する

Connections → Azure に移動し、appIdをAPP_ID、passwordをCLIENT_SECRET、tenantをTENANT_IDに入力します。AZURE_DEFAULT_REGIONを選択してConnectをクリックします。成功状態: 接続がConnectedステータスで表示されます。
クライアントシークレットは作成直後にコピーしてください。Azureは二度と表示しません。新しいシークレットが必要な場合はaz ad sp credential reset --id <appId>を実行します。

Microsoft Customer Agreementの請求

オンラインで購入した従量課金サブスクリプションはMicrosoft Customer Agreement(MCA)を使用します。Cost ManagementはMCAサブスクリプションに対してGiven subscription doesn't have valid WebDirect/AIRS offer typeを返すため、Optimizeは請求プロファイルのスコープでコストを読み取ります。 サービスプリンシパルにそのスコープへのアクセスを付与してください。Cost Management + Billing → 請求アカウント → Billing profiles → 対象のプロファイル → Access control (IAM) → Add に移動し、アプリ登録にBilling profile readerを割り当てます。サブスクリプションのロール割り当ては請求スコープを含みません。

接続の詳細

サブスクリプションは接続フィールドではありません。CloudThinkerはサービスプリンシパルが読み取れるすべてのサブスクリプションを検出します。

必要な権限

Readerだけではコストデータを取得できません。Readerは*/readを付与しますが、Cost Managementのクエリは*/readに一致しないPOSTアクションです。
エージェントにリソースを変更させる場合のみContributorを割り当ててください。書き込み呼び出しはすべてチャットでの承認を待ちます。

エージェントの機能

接続後、エージェントはAzureリソースの分析と最適化を実行できます。

接続を確認する

プロンプト例


トラブルシューティング

az loginまたはポータルがAADSTS530035: Access has been blocked by security defaultsを返します。セキュリティ既定値は、アプリを登録する前に多要素認証を要求します。aka.ms/mfasetupで認証方法を登録してから再度サインインしてください。--use-device-codeと--allow-no-subscriptionsでは回避できません。
APP_ID、CLIENT_SECRET、TENANT_IDを確認します。シークレットが期限切れでないこと、アプリ登録が入力したテナントにあることを確認してください。条件付きアクセスポリシーがサービスプリンシパルのサインインをブロックしていないことも確認してください。
az ad sp credential reset --id <appId>を実行するか、Microsoft Entra ID → App registrations → 対象のアプリ → Certificates & secrets で新しいシークレットを作成します。接続のCLIENT_SECRETを更新してください。
OptimizeがAzure Cost Management is not readableと表示します。サブスクリプションにCost Management Readerを割り当ててください。サブスクリプションがMicrosoft Customer Agreementの場合は、請求プロファイルにBilling profile readerも割り当てます。ロール割り当ての反映には数分かかります。
新しいサブスクリプションではCost Managementのスロットリングが強く、クエリが429 Too many requestsを返します。設定の誤りではありません。数分待ってからOptimizeを再読み込みしてください。
表示したいすべてのサブスクリプションにReaderロールが割り当てられていることを確認します。サービスプリンシパルが読み取れないサブスクリプションのリソースは表示されません。

セキュリティ

  • 最小権限 — エージェントがユースケースに必要な権限のみを付与します。まず読み取り専用から始め、後から拡張してください。
  • デフォルトで読み取り専用 — エージェントにこの接続で変更を行わせる場合を除き、読み取り専用の認証情報を使用してください。
  • 認証情報のローテーション — 通常のスケジュールに従ってキーとトークンをローテーションしてください。接続を更新すると、CloudThinker が新しい値を自動的に取得します。
  • オフボーディング時に失効 — 接続を削除するか、チームメンバーが退職する際には、プロバイダー側で認証情報を無効化してください。
  • シークレットの有効期限を設定 — クライアントシークレットには常に有効期限を設定し、期限前にローテーションしてください。
  • ロールのスコープを絞る — ReaderとCost Management ReaderはCloudThinkerが必要とするサブスクリプションに割り当て、既定で管理グループレベルには割り当てないでください。

関連

AWS接続

Amazon Web Servicesを接続

Oliverエージェント

Azureコンプライアンス向けセキュリティエージェント