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

# Firebase

> Kết nối Firebase với CloudThinker để kiểm kê project và ứng dụng, tra cứu cấu hình SDK, và kiểm tra quy tắc bảo mật Firestore/Storage

Kết nối project Firebase của bạn để cho phép các agent CloudThinker kiểm kê project và ứng dụng, đọc cấu hình SDK, kiểm tra quy tắc bảo mật Firestore, Storage và Realtime Database, xem xét trạng thái deploy, tìm kiếm tài liệu Firebase, và chạy các thao tác có approval-gate như tạo ứng dụng hoặc deploy.

Firebase xác thực bằng **Google Cloud service-account key** (file JSON). Các **IAM role** của service account xác định những gì agent có thể truy cập — cấp role Firebase chỉ đọc cho các kiểm tra và role rộng hơn chỉ khi bạn cần ghi hoặc deploy.

***

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

* Một **Firebase project** bạn muốn CloudThinker kiểm tra.
* Một **service-account key (JSON)** cho project đó.
* Quyền tạo service-account key và gán IAM role trong Google Cloud của project.

<Info>
  Service-account JSON là thông tin xác thực đầy đủ. Giới hạn IAM role của nó theo đặc quyền tối thiểu — role cấp viewer là đủ để kiểm kê và kiểm tra quy tắc.
</Info>

***

## Thiết lập

<Steps>
  <Step title="Tạo service-account key">
    Trong [Firebase Console](https://console.firebase.google.com), chọn project của bạn, sau đó nhấp vào biểu tượng **Settings** (bánh răng) trong thanh bên để mở **Project settings**. Mở tab **Service accounts** ở thanh trên cùng, nhấp **Generate new private key** và xác nhận bằng **Generate key** để tải xuống file JSON key.
  </Step>

  <Step title="Cấp IAM role (tùy chọn, cho đặc quyền tối thiểu)">
    Trong **Google Cloud Console → IAM**, cấp cho service account chỉ các role mà CloudThinker cần — role **Viewer** / **Firebase Viewer** cho kiểm tra chỉ đọc, hoặc role Firebase admin nếu bạn muốn ghi và deploy có approval-gate.
  </Step>

  <Step title="Thêm kết nối trong CloudThinker">
    Điều hướng đến **Connections → Firebase** và thêm thông tin xác thực:

    * **Service Account Key (JSON)**: kéo file `.json` đã tải xuống vào vùng tải lên — hoặc nhấp để duyệt và chọn file

    Nhấp **Connect**. CloudThinker đọc key, đặt project đang hoạt động từ key đó và hiển thị trạng thái **Connected**.
  </Step>
</Steps>

<Warning>
  Hãy xem file JSON đã tải xuống như mật khẩu. Lưu trong secret manager và xóa bản sao cục bộ sau khi tải lên CloudThinker.
</Warning>

***

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

| Trường                            | Mô tả                                                                                                                                   | Ví dụ                                                        |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| **GOOGLE\_SERVICE\_ACCOUNT\_KEY** | Toàn bộ JSON của Google Cloud service-account key. CloudThinker đọc `project_id` của nó để tự động đặt Firebase project đang hoạt động. | `{ "type": "service_account", "project_id": "my-app", ... }` |

<Note>
  CloudThinker xác định project đang hoạt động từ `project_id` trong key, nên không cần cấu hình project ID hay file config riêng.
</Note>

***

## Quyền cần thiết

Các thao tác đọc (kiểm tra project, ứng dụng, cấu hình SDK, và quy tắc bảo mật) hoạt động với role Firebase/GCP cấp **viewer**. Các thao tác điều khiển — tạo project hoặc ứng dụng, khởi tạo tính năng, chuyển project đang hoạt động, và deploy — ngoài ra yêu cầu role cho phép chúng **và** [approval](/vi/guide/approval) rõ ràng trong CloudThinker.

<Tip>
  Tuân thủ đặc quyền tối thiểu: cấp role Firebase chỉ đọc cho các kiểm tra và giữ role có quyền ghi khi thực sự cần. Giữ các thao tác điều khiển có approval-gate thay vì xóa biện pháp bảo vệ.
</Tip>

***

## Khả năng của agent

Sau khi kết nối, các agent có quyền đọc đối với project, ứng dụng và quy tắc Firebase của bạn.

| Khả năng                   | Mô tả                                                                                                                         |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Projects & Apps**        | Liệt kê các project có thể truy cập, kiểm tra project đang hoạt động, và liệt kê ứng dụng iOS, Android, và Web                |
| **SDK Configuration**      | Đọc cấu hình Firebase SDK của nền tảng hoặc ứng dụng                                                                          |
| **Security Rules**         | Đọc quy tắc Firestore, Storage và Realtime Database để kiểm tra quyền truy cập                                                |
| **Deploy State**           | Xem xét trạng thái deployment                                                                                                 |
| **Firebase Docs**          | Tìm kiếm tài liệu chính thức của Firebase và Google developer                                                                 |
| **Project & App Controls** | Tạo project, ứng dụng và Android SHA key, khởi tạo tính năng, chuyển project đang hoạt động, và deploy — **yêu cầu approval** |

<Info>
  Các hành động tạo, khởi tạo, deploy và chuyển project có approval-gate. CloudThinker yêu cầu xác nhận trước khi chạy chúng; các thao tác chỉ đọc chạy không cần approval.
</Info>

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

```text theme={null}
@alex show my Firebase environment and list the projects I can access
```

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

```text theme={null}
@alex review the current Firestore and Storage security rules, flag any that allow unauthenticated writes, and #recommend tighter definitions
@alex list all Firebase projects and the apps registered in the active project and #report as a table
@alex show the Firebase SDK config for my web app
```

<Note>
  Nếu có nhiều project có thể truy cập và không có project nào đang hoạt động, hãy đặt tên project trong câu lệnh để agent khoanh vùng đúng.
</Note>

***

## Xử lý sự cố

<Accordion title="Xác thực thất bại / thông tin xác thực không khả dụng">
  Service-account JSON không hợp lệ, không đầy đủ, hoặc được dán với các ký tự bị thiếu. Tạo private key mới trong Firebase Console và kết nối lại.
</Accordion>

<Accordion title="Agent báo không có project đang hoạt động">
  CloudThinker đặt project đang hoạt động từ `project_id` trong key. Nếu key không có `project_id` hoặc có nhiều project có thể truy cập, agent sẽ liệt kê chúng và hỏi bạn chọn cái nào — hãy đặt tên project để tiếp tục.
</Accordion>

<Accordion title="Từ chối quyền trên một project, quy tắc, hoặc deploy">
  Service account thiếu IAM role Firebase/GCP cho sản phẩm đó. Cấp role phù hợp trong Google Cloud IAM và kết nối lại.
</Accordion>

<Accordion title="Thao tác điều khiển không chạy">
  Tạo, khởi tạo và deploy yêu cầu cả IAM role cho phép hành động đó lẫn approval rõ ràng trong CloudThinker. Phê duyệt hành động khi được nhắc và xác nhận role của service account cho phép nó.
</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.

- **Approval cho các thao tác điều khiển** — giữ các hành động tạo, khởi tạo và deploy có approval-gate thay vì xóa biện pháp bảo vệ.
- **Bảo vệ key** — service-account JSON là thông tin xác thực đầy đủ; không bao giờ commit vào source control hoặc chia sẻ dưới dạng plain text.

***

## Liên quan

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

  <Card title="Approval" icon="shield-check" href="/vi/guide/approval">
    Cách thức hoạt động của các hành động có approval-gate
  </Card>
</CardGroup>
