> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudthinker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure

> Kết nối Microsoft Azure với CloudThinker để vận hành đa cloud, phân tích chi phí, và giám sát tuân thủ

Kết nối các subscription Azure của bạn để cho phép các agent CloudThinker phân tích chi phí, kiểm tra tuân thủ và quản lý hạ tầng trên Microsoft Azure.

Azure xác thực bằng **service principal** (đăng ký ứng dụng + client secret + tenant ID); các role assignment của principal xác định những gì mỗi agent có thể đọc.

***

## Điều kiện tiên quyết

* Subscription Azure với quyền Owner hoặc User Access Administrator.
* Quyền tạo app registration trong Azure Active Directory.
* Quyền gán role trên các subscription đích.

<Info>
  Role Reader là đủ để phân tích chi phí, kiểm tra bảo mật, và kiểm tra tài nguyên. Chỉ cấp role ghi khi bạn cần agent thực hiện các hành động trên tài nguyên Azure.
</Info>

***

## Thiết lập

<Steps>
  <Step title="Đăng ký ứng dụng">
    Điều hướng đến [Azure Portal](https://portal.azure.com/) và vào **Azure Active Directory → App registrations → New registration**:

    * **Name**: `CloudThinker-ReadOnly`
    * **Supported account types**: Accounts in this organizational directory only
    * Nhấp **Register**
  </Step>

  <Step title="Ghi chú thông tin ứng dụng">
    Sao chép và lưu các giá trị sau từ tổng quan ứng dụng:

    * **Application (client) ID**
    * **Directory (tenant) ID**
  </Step>

  <Step title="Tạo client secret">
    Trong app registration của bạn, vào **Certificates & secrets → New client secret**. Thêm mô tả, đặt thời hạn (khuyến nghị: 12 tháng) và nhấp **Add**. Sao chép giá trị secret ngay lập tức — sẽ không hiển thị lại.
  </Step>

  <Step title="Gán role Reader">
    Vào **Subscriptions → Your Subscription → Access control (IAM) → Add → Add role assignment**. Chọn role **Reader**, tìm và chọn app registration của bạn, rồi nhấp **Save**.
  </Step>

  <Step title="Thêm kết nối trong CloudThinker">
    Điều hướng đến **Connections → Azure** và nhập:

    * **Client ID** (Application ID)
    * **Client Secret** (giá trị secret bạn đã sao chép)
    * **Tenant ID** (Directory ID)
    * **Subscription ID**

    Nhấp **Connect**. CloudThinker xác minh thông tin xác thực và hiển thị trạng thái **Connected**.
  </Step>
</Steps>

<Warning>
  Sao chép client secret ngay sau khi tạo. Azure sẽ không hiển thị lại, và bạn cần tạo secret mới nếu bị mất.
</Warning>

### Thiết lập đa subscription

Đối với tổ chức có nhiều subscription Azure:

<Steps>
  <Step title="Dùng quyền truy cập Management Group">
    Gán role Reader ở cấp Management Group để bao quát tất cả subscription trong phạm vi.
  </Step>

  <Step title="Thêm quyền truy cập Cost Management">
    Cấp **Cost Management Reader** ở cấp billing account để phân tích chi phí đa subscription.
  </Step>

  <Step title="Cấu hình trong CloudThinker">
    Thêm tất cả subscription ID hoặc chọn "All Subscriptions" trong cài đặt kết nối.
  </Step>
</Steps>

***

## Chi tiết kết nối

| Trường              | Mô tả                                                | Ví dụ                                  |
| ------------------- | ---------------------------------------------------- | -------------------------------------- |
| **Client ID**       | Application (client) ID của app registration         | `00000000-0000-0000-0000-000000000000` |
| **Client Secret**   | Giá trị secret được tạo trong Certificates & secrets | —                                      |
| **Tenant ID**       | Directory (tenant) ID của Azure AD của bạn           | `00000000-0000-0000-0000-000000000000` |
| **Subscription ID** | ID subscription Azure cần kết nối                    | `00000000-0000-0000-0000-000000000000` |

***

## Quyền cần thiết

### Tối thiểu (phân tích chỉ đọc)

```
Reader                          # Quyền đọc cơ bản đối với tài nguyên
Cost Management Reader          # Dữ liệu chi phí và thanh toán
```

### Khuyến nghị (phân tích đầy đủ)

```
# Tất cả các role trên, cộng thêm:
Security Reader                 # Truy cập Security Center
Log Analytics Reader            # Truy cập Log Analytics workspace
Monitoring Reader               # Truy cập Azure Monitor
```

<Tip>
  Dùng role Reader thay vì Contributor; các thao tác đọc của CloudThinker không bao giờ yêu cầu quyền ghi. Đặt lịch xoay vòng cho client secret và tránh tùy chọn hết hạn "Never".
</Tip>

***

## Khả năng của agent

Sau khi kết nối, các agent có thể phân tích và tối ưu tài nguyên Azure của bạn.

| Agent                                 | Khả năng Azure                                                                   |
| ------------------------------------- | -------------------------------------------------------------------------------- |
| **[Alex](/vi/guide/agents/alex)**     | Phân tích chi phí, right-sizing VM, đề xuất Reserved Instance, tối ưu tài nguyên |
| **[Oliver](/vi/guide/agents/oliver)** | Phát hiện Security Center, kiểm tra Azure AD, kiểm tra tuân thủ, vi phạm policy  |
| **[Tony](/vi/guide/agents/tony)**     | Hiệu năng SQL Database, tối ưu Cosmos DB, điều chỉnh PostgreSQL                  |
| **[Kai](/vi/guide/agents/kai)**       | Quản lý cluster AKS, tối ưu container, phân tích workload                        |

### Xác minh kết nối

```text theme={null}
@alex run an Azure account check and list the connected subscriptions and resource groups
```

### Ví dụ câu lệnh

```text theme={null}
@alex analyze Azure VM costs over the last 30 days and #recommend right-sizing opportunities
@oliver audit Azure Security Center findings and flag high-severity policy violations
@kai check AKS cluster health and #report any failing pods or resource pressure
```

***

## Xử lý sự cố

<Accordion title="Xác thực thất bại">
  Xác minh Tenant ID, Client ID và Client Secret đúng. Kiểm tra client secret chưa hết hạn và app registration đang ở đúng Azure AD tenant. Đảm bảo không có conditional access policy nào đang chặn xác thực.
</Accordion>

<Accordion title="Client secret hết hạn">
  Vào **Azure AD → App registrations → Your app → Certificates & secrets**, tạo client secret mới và cập nhật secret trong cài đặt kết nối CloudThinker.
</Accordion>

<Accordion title="Thiếu tài nguyên">
  Xác minh role Reader được gán đúng subscription. Kiểm tra xem tài nguyên có trong subscription khác không và đảm bảo ứng dụng có quyền truy cập tất cả subscription cần thiết.
</Accordion>

<Accordion title="Không có dữ liệu chi phí">
  Xác minh role **Cost Management Reader** đã được gán. Kiểm tra quyền truy cập Cost Management + Billing và đảm bảo quyền truy cập billing account EA/MCA được cấu hình nếu áp dụng.
</Accordion>

***

## Bảo mật

* **Quyền tối thiểu** — chỉ cấp các quyền mà agent cần cho trường hợp sử dụng của bạn; bắt đầu với quyền chỉ đọc và mở rộng sau.
* **Chỉ đọc theo mặc định** — sử dụng thông tin xác thực chỉ đọc trừ khi bạn muốn agent thực hiện thay đổi qua kết nối này.
* **Xoay vòng thông tin xác thực** — xoay vòng khóa và token theo lịch trình thông thường của bạn; CloudThinker sẽ lấy giá trị mới khi bạn cập nhật kết nối.
* **Thu hồi khi bàn giao** — xóa thông tin xác thực tại nhà cung cấp khi bạn xóa một kết nối hoặc khi đồng nghiệp rời nhóm.

- **Đặt thời hạn secret** — luôn đặt thời hạn cho client secret (tránh "Never"); đặt lịch nhắc để xoay vòng trước khi hết hạn.
- **Dùng role Reader** — gán Reader thay vì Contributor; các thao tác đọc của CloudThinker không bao giờ yêu cầu quyền ghi.

***

## Liên quan

<CardGroup cols={2}>
  <Card title="Kết nối AWS" icon="https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/aws.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=45d526a3e9345214c0345f277da2e829" href="/vi/guide/connections/aws" width="24" height="24" data-path="images/icons/aws.svg">
    Kết nối Amazon Web Services
  </Card>

  <Card title="Agent Oliver" icon="shield-check" href="/vi/guide/agents/oliver">
    Agent tập trung vào bảo mật cho tuân thủ Azure
  </Card>
</CardGroup>
