> ## 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.

# Google Cloud

> Kết nối Google Cloud với CloudThinker để quản lý tài nguyên, tối ưu chi phí, và giám sát bảo mật qua service account

Kết nối các project GCP của bạn để cho phép các agent CloudThinker phân tích chi phí, tối ưu tài nguyên, kiểm tra bảo mật và quản lý hạ tầng trên các dịch vụ Google Cloud.

GCP xác thực bằng **service-account key** (file JSON); các IAM role của service account xác định những gì mỗi agent có thể truy cập.

***

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

* Một GCP project với quyền quản trị IAM.
* Quyền tạo service account và gán IAM role trong project.
* [Google Cloud Console](https://console.cloud.google.com/) có thể truy cập trong trình duyệt của bạn.

<Info>
  Service account cấp viewer là đủ để phân tích chi phí, kiểm tra bảo mật, và kiểm tra tài nguyên. Chỉ mở rộng role khi bạn cần khả năng ghi.
</Info>

***

## Thiết lập

<Steps>
  <Step title="Tạo service account">
    Trong [Google Cloud Console](https://console.cloud.google.com/), chọn project của bạn và điều hướng đến **IAM & Admin → Service accounts**. Nhấp **Create Service Account** và nhập:

    * **Name**: `cloudthinker-readonly`
    * **Description**: Read-only access for CloudThinker monitoring
  </Step>

  <Step title="Gán role">
    Cấp các viewer role cần thiết:

    * `Viewer` (quyền đọc cơ bản)
    * `Monitoring Viewer` (dành cho dữ liệu giám sát)
    * `Security Reviewer` (dành cho phân tích bảo mật)
  </Step>

  <Step title="Tạo JSON key">
    Nhấp vào service account vừa tạo từ danh sách, vào tab **Keys** → **Add key** → **Create new key**, chọn định dạng **JSON** và nhấp **Create**. Tải xuống file key và lưu trữ an toàn.
  </Step>

  <Step title="Thêm kết nối trong CloudThinker">
    Điều hướng đến **Connections → GCP** và tải lên file JSON key (hoặc dán nội dung của nó). 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>
  Lưu trữ file JSON key an toàn. Không bao giờ commit vào version control hoặc chia sẻ công khai.
</Warning>

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

Đối với tổ chức có nhiều GCP project:

<Steps>
  <Step title="Cấp quyền ở cấp tổ chức">
    Cấp role cho service account ở cấp tổ chức hoặc folder để nó có thể truy cập tất cả project đích.
  </Step>

  <Step title="Thêm quyền truy cập billing account">
    Thêm **Billing Account Viewer** để phân tích chi phí đa project.
  </Step>

  <Step title="Thêm project">
    CloudThinker tự động khám phá các project có thể truy cập sau khi kết nối.
  </Step>
</Steps>

***

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

| Trường                         | Mô tả                                                                            | Ví dụ                                                               |
| ------------------------------ | -------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| **Service Account Key (JSON)** | Toàn bộ JSON của GCP service-account key, tải lên hoặc dán vào hộp thoại kết nối | `{"type": "service_account", "project_id": "your-project-id", ...}` |

File key có cấu trúc như sau:

```json theme={null}
{
  "type": "service_account",
  "project_id": "your-project-id",
  "private_key_id": "key-id",
  "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
  "client_email": "cloudthinker-readonly@your-project.iam.gserviceaccount.com",
  "client_id": "123456789012345678901",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token"
}
```

***

## Quyền cần thiết

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

```
roles/viewer                    # Quyền đọc cơ bản
roles/monitoring.viewer         # Truy cập Cloud Monitoring
roles/logging.viewer            # Truy cập Cloud Logging
```

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

```
# Tất cả các role trên, cộng thêm:
roles/compute.viewer            # Chi tiết Compute Engine
roles/container.viewer          # Truy cập cluster GKE
roles/cloudsql.viewer           # Truy cập Cloud SQL
roles/bigquery.dataViewer       # Phân tích BigQuery
roles/billing.viewer            # Dữ liệu thanh toán và chi phí
roles/securitycenter.viewer     # Security Command Center
```

<Tip>
  Bắt đầu với các role tối thiểu và thêm dần khi cần. Viewer role ở cấp project là đủ cho phân tích chi phí và hầu hết các kiểm tra bảo mật.
</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 GCP của bạn.

| Agent                                 | Khả năng GCP                                                                 |
| ------------------------------------- | ---------------------------------------------------------------------------- |
| **[Alex](/vi/guide/agents/alex)**     | Phân tích chi phí, right-sizing VM, đề xuất committed use, tối ưu tài nguyên |
| **[Oliver](/vi/guide/agents/oliver)** | Phát hiện Security Command Center, kiểm tra IAM, kiểm tra tuân thủ           |
| **[Tony](/vi/guide/agents/tony)**     | Hiệu năng Cloud SQL, tối ưu BigQuery, điều chỉnh Spanner                     |
| **[Kai](/vi/guide/agents/kai)**       | Quản lý cluster GKE, tối ưu workload, phân tích Autopilot                    |

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

```text theme={null}
@alex run a GCP account check and list connected projects and active services
```

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

```text theme={null}
@alex analyze Compute Engine costs over the last 30 days and #recommend right-sizing opportunities
@oliver audit GCP IAM bindings and flag any over-permissioned service accounts
@kai inspect GKE cluster health and #report any pod failures or resource pressure
```

***

## Xử lý sự cố

<Accordion title="Lỗi Permission denied">
  Xác minh service account có các role cần thiết. Kiểm tra IAM binding ở cấp project, đảm bảo API được bật (Compute, Monitoring, v.v.) và xác nhận JSON key hợp lệ và chưa hết hạn.
</Accordion>

<Accordion title="File key không hợp lệ">
  Xác minh file JSON đầy đủ và được định dạng đúng. Kiểm tra rằng private key không bị cắt bớt và không có khoảng trắng hoặc ký tự thừa. Thử tạo lại key từ GCP Console.
</Accordion>

<Accordion title="Thiếu dữ liệu thanh toán">
  Xác minh role **Billing Account Viewer** đã được gán. Bật Cloud Billing API và kiểm tra rằng billing export tới BigQuery đã được cấu hình.
</Accordion>

<Accordion title="Sự cố truy cập GKE">
  Đảm bảo role **Kubernetes Engine Viewer** đã được gán. Xác minh cluster trong project có thể truy cập và kiểm tra xem cluster có sử dụng Workload Identity khô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.

- **Phạm vi project** — giới hạn IAM role của service account chỉ ở các GCP project mà CloudThinker cần truy cập.
- **Lưu trữ key** — lưu service-account JSON trong secret manager và xóa bản sao cục bộ sau khi tải lên CloudThinker.

***

## 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 Kai" icon="dharmachakra" href="/vi/guide/agents/kai">
    Agent tập trung vào Kubernetes cho GKE
  </Card>
</CardGroup>
