

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用安全增強型 Linux (SELinux) 設定 CloudWatch 代理程式
<a name="CloudWatch-Agent-SELinux"></a>

如果您的系統已啟用安全增強型 Linux (SELinux)，必須套用適當的安全政策，以確保 CloudWatch 代理程式在受限網域中執行。

## 先決條件
<a name="CloudWatch-Agent-SELinux-prerequisites"></a>

請先確保滿足下列**先決條件**，再為代理程式設定 SELinux：

**滿足將 CloudWatch 代理程式與 SELinux 搭配使用的先決條件**

1. 安裝下列 SELinux 政策開發套件 (若尚未安裝)：

   ```
   sudo yum update
   sudo yum install -y selinux-policy-devel policycoreutils-devel rpm-build git
   ```

1. 執行下列命令以檢查系統的 SELinux 狀態：

   ```
   sestatus
   ```

   輸出範例：

   ```
   SELinux status:                 enabled
   SELinuxfs mount:                /sys/fs/selinux
   SELinux root directory:         /etc/selinux
   Loaded policy name:             targeted
   Current mode:                   permissive
   Mode from config file:          permissive
   Policy MLS status:              enabled
   Policy deny_unknown status:     allowed
   Memory protection checking:     actual (secure)
   Max kernel policy version:      33
   ```

   如果發現 SELinux 目前已停用，執行下列動作：

   1. 輸入下列命令以開啟 SELinux 檔案：

      ```
      sudo vi /etc/selinux/config
      ```

   1. 將 `SELINUX` 參數設為 `permissive` 或 `enforcing`。例如：

      ```
      SELINUX=enforcing
      ```

   1. 儲存檔案並重新啟動系統以套用變更。

      ```
      sudo reboot
      ```

1. 確保 CloudWatch 代理程式正在以 `systemd` 服務身分執行。這是在受限的 SELinux 網域內使用的必要條件。

   ```
   sudo systemctl status amazon-cloudwatch-agent
   ```

   如果代理程式已正確設定，啟動時的輸出應指示其狀態為 `active (running)` 和 `enabled`。

## 為代理程式設定 SELinux
<a name="CloudWatch-Agent-SELinux-configure"></a>

滿足先決條件之後，可以設定 SELinux。

**為 CloudWatch 代理程式設定 SELinux**

1. 輸入下列命令，以複製 CloudWatch 代理程式的 SELinux 政策：

   ```
   git clone https://github.com/aws/amazon-cloudwatch-agent-selinux.git
   ```

1. 導覽至複製的儲存庫，然後輸入下列命令來更新指令碼許可：

   ```
   cd amazon-cloudwatch-agent-selinux  
   chmod +x amazon_cloudwatch_agent.sh
   ```

1. 輸入下列命令，以使用 `sudo` 執行 SELinux 政策安裝指令碼。在執行期間，指令碼會提示您輸入 `y` 或 `n` 以允許自動重新啟動。此重新啟動可確保代理程式轉換至正確的 SELinux 網域。

   ```
   sudo ./amazon_cloudwatch_agent.sh
   ```

1. 如果 CloudWatch 代理程式未重新啟動，請重新啟動以確保其轉換到正確的 SELinux 網域：

   ```
   sudo systemctl restart amazon-cloudwatch-agent
   ```

1. 輸入下列命令，以確認 CloudWatch 代理程式正在受限的網域中執行：

   ```
   ps -efZ | grep amazon-cloudwatch-agent
   ```

   如果已正確限制代理程式，輸出應指示 SELinux 受限的網域，而非 `unconfined_service_t`。

   以下是正確限制代理程式時的輸出範例。

   ```
   system_u:system_r:confined_t:s0 root 1234 1 0 12:00 ? 00:00:10 /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent
   ```

設定 SELinux 之後，您可以繼續設定代理程式，讓其收集指標、日誌和追蹤。如需詳細資訊，請參閱[手動建立或編輯 CloudWatch 代理程式組態檔案](CloudWatch-Agent-Configuration-File-Details.md)。