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

# Okta

> Kết nối Okta để agent có thể rà soát quyền truy cập người dùng, điều tra đăng nhập và quản lý group do CloudThinker sở hữu thông qua Approvals của bạn

Kết nối Okta để các agent CloudThinker rà soát người dùng, group, việc gán ứng dụng và hoạt động đăng nhập, cũng như tạo và thêm thành viên cho các group do CloudThinker sở hữu thông qua [Approvals](https://docs.cloudthinker.io/vi/guide/approvals/overview.md) của bạn. Kết nối dùng **API token** của Okta, token này hoạt động với quyền của administrator đã tạo ra nó.

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

* Một Okta organization trên tên miền do Okta lưu trữ như `okta.com`, `okta-emea.com` hoặc `oktapreview.com`. Tên miền tùy chỉnh và tên miền Okta for Government (`okta-gov.com`, `okta.mil`) không được chấp nhận.
* Một tài khoản **Okta administrator chuyên dụng** để tạo token, với các vai trò trong [Quyền yêu cầu](#quyền-yêu-cầu).

> [!NOTE]
>
> Token có thể làm mọi việc mà người tạo nó làm được. Token tạo từ super administrator cá nhân cho phép agent đọc toàn bộ organization của bạn. Thay vào đó, hãy tạo token từ một administrator chuyên dụng với quyền tối thiểu.

## Thiết lập

**1. Tạo API token**

Đăng nhập Okta Admin Console bằng administrator chuyên dụng. Vào **Security → API → Tokens**, nhấn **Create token**, và đặt tên là `cloudthinker`.

Trong cùng hộp thoại, Okta cho phép bạn giới hạn nơi các lệnh gọi từ token này có thể xuất phát. Để khóa token cho CloudThinker, hãy chọn một network zone chứa các egress IP của CloudThinker. Tài liệu này không công bố danh sách egress IP của CloudThinker: hãy hỏi đầu mối liên hệ CloudThinker của bạn, hoặc [liên hệ với chúng tôi](https://cloudthinker.io/contact). Bạn cũng có thể đặt phần rate limit của org dành cho token này dưới 100% để agent không chiếm hết hạn mức của các tích hợp khác.

Sao chép giá trị ngay. Okta chỉ hiển thị giá trị này một lần. Okta cũng cho token hết hạn nếu không có request nào trong 30 ngày, nên kết nối không được dùng đến sẽ ngừng hoạt động.

**2. Sao chép tên miền Okta**

Trong Admin Console, nhấn vào tên của bạn ở góc trên bên phải. Tên miền hiển thị dưới email của bạn, ví dụ `acme.okta.com`. Chỉ giữ hostname, chẳng hạn `acme.okta.com`. Bỏ `https://`, port và mọi path.

Dùng tên miền organization thuần, không phải địa chỉ Admin Console trên trình duyệt (`acme-admin.okta.com`).

**3. Thêm kết nối trong CloudThinker**

Trong thanh bên, nhấn **More → Workspace settings → Connections**, rồi trên tab **Builtin Connections** chọn **Okta**, và điền **Okta domain** và **API token**. Nhấn **Connect**.

**Trạng thái thành công:** kết nối hiển thị **Connecting** và **Verifying**, rồi **Connected**, với thông báo `Okta connection verified (acme, ACTIVE)`. Để chứng minh token hoạt động, CloudThinker chỉ đọc cài đặt organization của bạn và không đọc gì khác.

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

| Trường | Mô tả | Ví dụ |
| - | - | - |
| **Okta domain** | Hostname của organization, không có scheme, port hay path | `acme.okta.com` |
| **API token** | Token từ **Security → API → Tokens** | `00Ab...` |

## Quyền yêu cầu

API token của Okta không có scope riêng. Token kế thừa các vai trò administrator của người tạo, nên bạn kiểm soát quyền truy cập bằng cách chọn vai trò cho administrator đó.

| Bạn muốn agent | Vai trò cho administrator của token |
| - | - |
| Rà soát người dùng, group, ứng dụng và quyền truy cập của một người | **Read-only Administrator** |
| Điều tra đăng nhập trong System Log | **Read-only Administrator** |
| Tạo group do CloudThinker sở hữu | Một custom admin role với **Create groups** (phạm vi organization) |
| Thêm hoặc xóa thành viên của các group đó | Cùng custom role đó với **Manage group membership** và **Edit users' group membership** |

> [!TIP]
>
> Bắt đầu chỉ với **Read-only Administrator**. Chỉ thêm custom group role khi bạn muốn agent quản lý group on-call hoặc group quyền truy cập.

### Thiết lập custom group role

1. Trong Admin Console, vào **Security → Administrators → Roles** và nhấn **Create new role**. Chọn **Create groups**, **Manage group membership** và **Edit users' group membership**, rồi lưu.
2. Mở tab **Resource sets** và nhấn **Create new resource set**. Thêm **All groups** và **All users**.
3. Mở tab **Admins**, nhấn **Add assignment**, chọn administrator chuyên dụng, và gắn administrator đó với role và resource set.

Đặt phạm vi resource set cho tất cả group. CloudThinker tạo các group, nên bạn không thể liệt kê trước các group này, và CloudThinker vốn đã từ chối thay đổi mọi group không do CloudThinker tạo. Bản thân token vẫn có thể thay đổi bất kỳ group nào, nên hãy bảo vệ token như mọi thông tin xác thực admin khác.

## Khả năng của agent

| Khả năng | Agent có thể làm gì |
| - | - |
| **Kiểm kê danh tính** | Liệt kê người dùng cùng trạng thái, và group, theo tên |
| **Rà soát quyền truy cập của một người** | Truy vết một người dùng cụ thể đến các group, ứng dụng được gán và sự kiện System Log gần đây |
| **Điều tra đăng nhập** | Xem lại System Log trong một khoảng thời gian để tìm lỗi, khóa tài khoản, tác nhân và địa chỉ IP client |
| **Quyền truy cập ứng dụng** | So sánh việc gán trực tiếp và gán qua group, và đánh dấu ứng dụng không hoạt động vẫn còn được gán |
| **Tạo group** | Tạo một Okta group do CloudThinker sở hữu, thông qua Approvals của bạn |
| **Thay đổi thành viên** | Thêm hoặc xóa đúng một người dùng trong đúng một group do CloudThinker sở hữu, thông qua Approvals của bạn |

### Giới hạn

* **Số lượng là mẫu**: các API danh sách của Okta trả về theo trang, không phải tổng số. Agent báo cáo các hàng đã đọc và liệu còn trang nào khác không, không bao giờ báo tổng số của organization.
* **90 ngày đăng nhập**: Okta giữ sự kiện System Log trong 90 ngày, nên không thể truy cập các lần đăng nhập cũ hơn.
* **Áp dụng rate limit của Okta**: một org bận rộn có thể trả về HTTP 429. Xem [Khắc phục sự cố](#khắc-phục-sự-cố).

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

```text theme={null}
Show the Okta users and groups this connection can read, and the applications they're assigned to
```

Kết quả mong đợi là người dùng, group và ứng dụng có tên, mỗi danh sách được đánh dấu liệu còn trang nào khác không. Lỗi 403 nghĩa là administrator của token thiếu **Read-only Administrator**.

### Ví dụ prompt

```text theme={null}
Which groups and applications does Okta user 00u1a2b3c4d5e6f7g8h9 have, and what did they do in the last 7 days?
Investigate failed Okta sign-ins in the last 24 hours and group them by outcome
Create an Okta group named CloudThinker-OnCall and add Okta user 00u1a2b3c4d5e6f7g8h9
```

Prompt cuối nêu thành viên bằng Okta user ID vì che email được bật theo mặc định trong [guardrail](https://docs.cloudthinker.io/vi/guide/security/custom-guardrails.md), và agent không thể dùng một email đã bị che làm Okta login. Prompt này tạo hai thay đổi, mỗi thay đổi được kiểm tra riêng: một để tạo group, một để thêm thành viên. Khi cần người phê duyệt, hãy dự kiến hai yêu cầu phê duyệt.

## Quyền ghi

Agent có thể thực hiện đúng ba loại thay đổi. Mỗi thay đổi đi qua [Approvals](https://docs.cloudthinker.io/vi/guide/approvals/overview.md) và bắt đầu bằng một lần đọc mới organization của bạn.

Agent cũng cần **Allow writes** được bật (mặc định bật). Để khóa thao tác ghi trong CloudThinker, mở **Okta** trong **More → Workspace settings → Connections** và tắt công tắc **Allow writes** trên bảng chi tiết của kết nối.

Mọi thay đổi do agent thực hiện đều đi qua [Approvals](https://docs.cloudthinker.io/vi/guide/approvals/overview.md) của workspace trước. Ở chế độ mặc định **Auto · Rules + AI · Ask me**, AI judgment có thể cho một thay đổi an toàn chạy mà không cần hỏi. Allow Rule cũng vậy, sau khi CloudThinker bật [Rule enforcement](https://docs.cloudthinker.io/vi/guide/approvals/rules.md#khắc-phục-sự-cố) cho workspace của bạn. Chọn **Manual** nếu bạn muốn tự phê duyệt mọi thay đổi.

| Thay đổi | Kiểm tra an toàn |
| - | - |
| Tạo group | Tạo một Okta group và ghi một biên nhận quyền sở hữu CloudThinker có chữ ký, gắn với group ID, làm dòng đầu tiên trong mô tả của group |
| Thêm một thành viên | Cần đúng group ID, tên hiện tại, biên nhận quyền sở hữu hợp lệ, và đúng login hoặc ID của người dùng |
| Xóa một thành viên | Cùng các kiểm tra trên, rồi xác nhận danh sách thành viên kết quả |

Bạn có thể thấy biên nhận trong mô tả của group trong Okta. Nếu ai đó sửa dòng đó hoặc tạo lại group, agent coi group đó không còn do CloudThinker sở hữu và từ chối các thay đổi tiếp theo. Đổi tên thì không sao: request tiếp theo chỉ cần tên mới.

Mọi thứ khác đều bị từ chối: đổi tên hoặc xóa group, thay đổi group mà CloudThinker không tạo, vòng đời người dùng, factor, thông tin xác thực, session, token, admin role, việc gán ứng dụng và policy. Với những việc đó, agent cung cấp cho bạn các bước trong Admin Console để tự thực hiện.

## Khắc phục sự cố

> **Okta rejected the API token**
>
> Token sai, đã bị thu hồi, hoặc đã hết hạn sau 30 ngày không có request. Okta cũng vô hiệu hóa token khi administrator đã tạo ra nó bị vô hiệu hóa hoặc tạm ngưng. Kiểm tra **Security → API → Tokens** trong Okta và tạo token mới nếu cần. Để thay thế, làm theo [Xoay vòng thông tin xác thực](https://docs.cloudthinker.io/vi/guide/connections/overview.md#xoay-vòng-thông-tin-xác-thực): nhấn biểu tượng bút chì trên hàng Okta, rồi **Replace…** trong **Edit Instance**.

> **Okta domain must be a supported Okta hostname**
>
> Giá trị có scheme, port, path hoặc thông tin xác thực, hoặc không phải tên miền do Okta lưu trữ. Chỉ nhập hostname, chẳng hạn `acme.okta.com`. Tên miền tùy chỉnh không được chấp nhận.

> **The token is valid, but its admin role cannot read the org settings**
>
> Administrator của token thiếu quyền đọc. Cấp cho administrator đó **Read-only Administrator**, hoặc tạo token từ một administrator đã có vai trò này. Lỗi 403 ở một câu hỏi sau này cũng có nghĩa tương tự với tài nguyên đó. Lỗi này không có nghĩa là dữ liệu không tồn tại.

> **That domain answered, but it does not serve the Okta org settings**
>
> Tên miền bị viết sai, hoặc đó là địa chỉ console `-admin` thay vì tên miền organization của bạn. Nhấn vào tên của bạn ở góc trên bên phải Admin Console và sao chép tên miền hiển thị dưới email.

> **Agent không tìm thấy một người theo email**
>
> [Guardrail](https://docs.cloudthinker.io/vi/guide/security/custom-guardrails.md) che địa chỉ email theo mặc định, và agent không thể dùng một email đã bị che làm Okta login. Thay vào đó, hãy cung cấp Okta user ID, lấy từ **Directory → People** trong Admin Console.

> **Okta rate-limited the request**
>
> Okta trả về HTTP 429. Chờ đến khi cửa sổ rate limit được đặt lại, rồi hỏi lại.

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

- **Dùng administrator chuyên dụng**: token kế thừa vai trò của người tạo, nên một super administrator cá nhân cho agent phạm vi rộng hơn nhiều so với mức cần thiết.
- **Thao tác ghi chỉ nằm trong group do CloudThinker sở hữu**: phê duyệt một thay đổi không thể mở rộng phạm vi agent được phép chạm tới, và mọi thay đổi thành viên đều được kiểm tra sau đó.

## Liên quan

> **[Keycloak](https://docs.cloudthinker.io/vi/guide/connections/keycloak.md)**
>
> Kiểm tra realm, người dùng, client, role và luồng xác thực trong Keycloak.

> **[Approvals](https://docs.cloudthinker.io/vi/guide/approvals/overview.md)**
>
> Quyết định thay đổi Okta nào được chạy, chờ người duyệt, hoặc bị từ chối.

> **[Single Sign-On](https://docs.cloudthinker.io/vi/guide/security/sso.md)**
>
> Đăng nhập CloudThinker thông qua Okta, và cấp phát tài khoản bằng SCIM.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.