iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Build on Google AI

打造零成本企業級 AI Agent:以 Gemini 2.5 Flash 構建金融分析助手與維運實戰系列 第 2

【Day 02】打造穩固基石:RHEL 基礎環境設定與 Rootless Podman 容器安全隔離

  • 分享至 

  • xImage
  •  

「系統安全不是在出事後才補強,而是從最底層的基礎設施就開始設計!」

在 Day 01 中,我們揭曉了 Angelina AI Agent 的全貌。今天我們不急著寫 Python 程式碼,而是要先把 Agent 的「家」——基礎設施與容器環境建置好!

今天我們將探討:

  1. 為什麼選擇 RHEL 作為 OS 平台呢?
  2. 為什麼堅持使用 Rootless Podman(非 Root 容器)呢?
  3. 實作:從零設定環境與構建第一個安全的 Podman 容器。

一、基礎設施選型:為什麼是 RHEL + Podman 呢?

在設計 AI Agent 的維運架構時,安全性與穩定度是我的首要考量:

  1. Red Hat Enterprise Linux (RHEL)

    • 穩定度與安全性:RHEL 提供企業級的安全合規性與穩定度。透過 Red Hat Developer Program,個人開發者可以免費取得 16 台 VM 的合法開發訂閱,非常適合做為 Self-hosted 專案的基底。
    • 原生整合:RHEL 原生對 Podman 與 systemd 有極佳的整合,方便後續進行服務自動化管理。
  2. Rootless Podman vs. Traditional Docker

    • 傳統的 Docker Daemon 預設需要 root 權限才能運行。如果容器內部存在安全漏洞被突破,攻擊者極可能直接取得 Host 的 root 權限,造成嚴重的 Privilege Escalation 威脅。
    • Rootless 模式:Podman 支援完全不需 root 權限(Rootless)即可建立與運行容器。即使容器被零日漏洞突破,攻擊者也僅能影響該普通使用者的權限,無法危害整體 RHEL 宿主機。
    • 無 Daemon 架構:Podman 是 Fork-exec 模型,不依賴單一的中央服務(Daemon),系統資源佔用更低,運作更為穩健。

二、環境建置與 Podman 配置實務

接下來,我們在 RHEL 上進行 Rootless Podman 的環境配置。

Step 1:安裝 Podman 與相關工具
在 RHEL 上,Podman 通常已預裝。若未安裝,可使用 dnf 進行安裝:

# 更新套件庫並安裝 podman
sudo dnf update -y
sudo dnf install -y podman

Step 2:啟用 User Linger(讓容器在登出後持續運行)
預設情況下,當普通使用者登出 Linux 系統時,該使用者的進程會被終止。為了讓 AI Agent 24 小時不間斷運作,必須啟用 linger:

# 允許當前使用者在登出後繼續運行 background processes
loginctl enable-linger $USER

# 確認 linger 狀態 (應顯示:Linger=yes)
loginctl show-user $USER | grep Linger

三、Containerfile 撰寫與 Rootless 實戰

為了確保 Angelina 後端環境乾淨且安全,我們撰寫 Containerfile,並遵循最小權限原則。

1. 專案的 Containerfile 內容

# 使用 Python 3.12 基礎鏡像
FROM python:3.12-slim

WORKDIR /app

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    && rm -rf /var/lib/apt/lists/*

# 複製依賴文件並安裝
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 複製應用程式碼
COPY . .

# 開放 FastAPI 預設埠位
EXPOSE 8000

# 啟動 FastAPI / Uvicorn 服務
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

2. 構建與運行容器(完全對齊專案 Quick Start)
在專案根目錄下,準備好 .env 設定檔後即可進行容器構建與啟動:

# 1. 構建 Podman 鏡像
podman build -t angelina-finance-agent .

# 2. 以 Rootless 模式運行容器,並傳入環境變數與資料掛載
# (註::Z 標籤用於 RHEL SELinux 安全權限修飾)
podman run -d \
  --name angelina \
  --env-file .env \
  -p 8000:8000 \
  -v ./data:/app/data:Z \
  -v ./backups:/app/backups:Z \
  angelina-finance-agent

# 3. 確認容器運作狀態與日誌
podman ps -a --filter name=angelina
podman logs -f angelina

四、今日總結與架構考量

今天我們建立了 Angelina AI Agent 的基礎運行環境:

  1. 選用 RHEL 提供企業級的基底與穩定度。
  2. 透過 Rootless Podman 實現容器環境的安全隔離,從根本阻止權限提升攻擊。
  3. 配合 .env 環境變數與 SELinux 掛載權限,確保應用程式與金鑰資料安全分離。

有了這個堅固的安全隔離箱,明天我們將使用 Ansible Playbook 來實現基礎設施的自動化配置與部署(deploy.yml, status.yml),讓整套系統具備真正的 Code 化管理能力!

明日預告:【Day 03】自動化維運實戰:使用 Ansible Playbook 一鍵部署與管理多 VM 基礎設施


上一篇
打造 $0 元企業級 AI Agent:Angelina 金融分析代理人篇章
下一篇
【Day 03】自動化維運實戰:使用 Ansible Playbook 一鍵部署與管理多 VM 基礎設施
系列文
打造零成本企業級 AI Agent:以 Gemini 2.5 Flash 構建金融分析助手與維運實戰3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言