管理 Event Streams 實例的鑑別
依預設,Event Streams 支援兩個 SASL (簡式鑑別和安全層) 機制作為 Event Streams 實例的鑑別方法 :PLAIN 和 OAUTHBEARER。
使用 SASL PLAIN 配置的 Kafka 用戶端在鑑別處理程序中使用 IAM API 金鑰作為純文字密碼,Event Streams 會將 API 金鑰傳送至 IAM 以進行驗證。 鑑別時,此用戶端將保持連線,且在中斷連線且想要重新連接之前將不需要重新鑑別。
使用 SASL OAUTHBEARER 配置的 Kafka 用戶端在鑑別處理程序中使用 IAM 存取記號,Event Streams 會透過 IAM 公開金鑰來驗證記號。 因為 IAM 存取記號具有有效期限 (通常為 1 小時),所以需要 Kafka 用戶端重新產生新的記號,並在前一個記號接近有效期限時重新執行鑑別處理程序。 此方法透過兩種方式提供與 SASL PLAIN 相比更好的安全:
- API 金鑰一律停留在用戶端以產生存取記號,並且不再透過網路傳送至 Kafka 分配管理系統,這會移除 API 金鑰暴露的風險。
- 當存取記號即將到期時,鑑別處理程序會定期進行,這會將記號曝光的風險降至最低。
如需更安全的鑑別,SASL OAUTHBEARER 是 Kafka 用戶端唯一建議的鑑別方法。 請參閱 配置 Kafka API 用戶端 如何在 Kafka 用戶端中配置 SASL OAUTHBEARER。
企業使用者可以選擇在其「企業」實例中停用 SASL PLAIN。 請使用下列指令:
ibmcloud resource service-instance-update <instance-name> -p '{"iam_token_only":true}'
連接至 Event Streams
如需如何取得外部應用程式的安全金鑰認證的相關資訊,請參閱 連接至 Event Streams。
管理 Event Streams 資源的授權
您可以用精細的方式保護 Event Streams 資源,以管理您要授與每位使用者對每項資源的存取權。
當您變更 IAM 策略和權限時,它們有時可能需要幾分鐘才能反映在底層服務中。
我可以保護什麼?
在Event Streams中,您可以安全地存取下列資源:
- Cluster(叢集):您可以控制哪些應用程式和使用者可以連接到該服務。
- 主題(topic):您可以控制使用者和應用程式建立、刪除、讀取和寫入主題的能力。
- 消費者群組(group):您可以控制應用程式加入消費者群組的能力。
- 生產者事務 (txnid):您可以控制在Kafka中使用事務性生產者功能的能力(即跨多個分區的單一原子寫入)。
您可以指派給使用者對每個資源的存取等級(也稱為角色)如下。
| 存取角色 | 動作的說明 | 範例動作 |
|---|---|---|
| 讀者 | 在Event Streams中執行唯讀操作,例如查看資源。 | 透過分配對叢集資源類型的讀取存取權限,允許應用程式連接到叢集。 |
| 撰寫者 | 撰寫者具備超越讀者角色的許可權,包括編輯 Event Streams 資源。 | 透過分配對主題資源和主題名稱類型的寫入權限,允許應用程式產生主題。 |
| 管理員 | 管理員具備超越撰寫者角色的許可權,可以完成特許動作。 此外,您可以建立及編輯 Event Streams 資源。 | 藉由指派對 Event Streams 實例的管理權,容許對所有資源的完整存取。 |
如何指派存取權?
Cloud Identity and Access Management (IAM) 原則會連接至要被控制的資源。 每個策略都定義特定使用者必須擁有的存取等級以及對哪些資源或資源集的存取權限。 原則包含下列資訊:
- 原則適用的服務類型。 例如,Event Streams。 您可以設定原則的範圍,以包含所有服務類型。
- 要被保護的服務實例。 您可以設定原則的範圍,以包含服務類型的所有實例。
- 要被保護的資源類型。 有效值為
cluster、topic、group、schema或txnid。 您可以選擇是否指定類型。 如果不指定類型,原則便會適用於服務實例中的所有資源。 如果您要指定多種資源類型,則必須為每種資源建立一個原則。 - 要被保護的資源。 指定
topic、group、schema和txnid類型的資源。 如果不指定資源,原則便會適用於服務實例中指定類型的所有資源。 - 分配給使用者的角色。 例如,讀者、撰寫者或管理員。
如需 IAM 的相關資訊,請參閱 IBM Cloud Identity and Access Management。
有關如何設定策略的範例,請參閱 IBM Cloud IAM ServiceID 和 API 金鑰。
萬用字元
您可以利用 IAM 萬用字元功能在 Event Streams 上設定資源群組的原則。 例如,如果您為所有主題指定 Dept1_Topic1 和 Dept1_Topic2 等名稱,則可以為名為 Dept1_* 主題設定策略,並且這些策略將套用於具有該前綴的所有主題。 有關詳細信息,請參閱 使用通配符策略指派存取權限。
預設安全設定為何?
依預設,佈建 Event Streams 之後,佈建它的使用者會被授與對所有實例資源的管理員角色。 此外,任何對同一帳戶中的「所有」服務或「所有」Event Streams服務實例具有管理員角色的使用者也擁有完全存取權限。
然後,您可以應用更多策略來擴展對其他使用者的存取權限。 您可以設定原則的範圍,以適用於 Event Streams 整體,或是適用於 Event Streams 內的個別資源。 有關更多信息,請參閱 常見操作。
只有具有帳戶管理角色的使用者才能向使用者指派策略。 指派原則的方法是使用 IBM Cloud 儀表板,或使用 ibmcloud 指令。
一般動作
下表彙總一些一般 Event Streams 動作以及您需要指派的存取權。
叢集需求
透過控制對叢集資源的存取權,您可以決定哪些應用程式及使用者可以連接至服務。 除了下列資源類型所需的原則之外,還需要存取 ResourceType: Cluster 及 Role: Reader, Writer, Manager。
生產者動作
下表說明向 Event Streams產生訊息的使用者或應用程式所需的角色及資源需求。 除了此資源類型所需的原則之外,還需要存取 ResourceType: Cluster 及 Role: Reader, Writer, Manager。
| 生產者動作 | 主題 | 群組 | txnid |
|---|---|---|---|
| 向主題發送訊息。 | 撰寫者 | 撰寫者 [1] | |
| 允許應用程式以事務方式產生主題。 | 撰寫者 | 讀者 | 撰寫者 |
| 起始設定交易。 | 撰寫者 | ||
| 確定交易。 | 撰寫者 | 撰寫者 | |
| 中斷交易。 | 撰寫者 | ||
| 將偏移傳送至交易。 | 讀者 | 撰寫者 |
消費者動作
下表說明耗用來自 Event Streams之訊息的使用者或應用程式所需的角色及資源需求。 除了此資源類型所需的原則之外,還需要存取 ResourceType: Cluster 及 Role: Reader, Writer, Manager。
| 消費者動作 | 主題 | 群組 | txnid |
|---|---|---|---|
| 允許應用程式使用主題(消費者群組)。 | 讀者 | 讀者 [2] | |
| 允許應用程式連接並消費特定主題(無消費者群組)。 | 讀者 | ||
| 允許應用程式從任何主題(無消費者群組)連接和消費。 | 讀者 | ||
| 使用 Kafka Streams。 | 管理員 | 讀者 | |
| 刪除消費者群組。 | 管理員 | ||
| 指派。 | 讀者 | ||
| 確定非同步 | 讀者 | 讀者 | |
| 確定同步。 | 讀者 | 讀者 | |
| 施行重新平衡。 | 讀者 | ||
| 投票 | 讀者 | ||
| 訂閱。 | 讀者 | ||
| 取消訂閱。 | 讀者 | 撰寫者 |
管理動作
除了此資源類型所需的原則之外,還需要存取 ResourceType: Cluster 及 Role: Reader, Writer, Manager。
| 管理動作 | 主題 | 群組 | txnid |
|---|---|---|---|
| 變更主題配置。 | 管理員 | ||
| 變更消費者群組偏移。 | 讀者 | 讀者 | |
| 建立分割區。 | 管理員 | ||
| 建立主題。 | 管理員 | ||
| 刪除消費者群組偏移。 | 讀者 | 管理員 | |
| 刪除消費者群組。 | 管理員 | ||
| 刪除記錄。 | 管理員 | ||
| 刪除主題。 | 管理員 | ||
| 說明生產者。 | 讀者 | ||
| 柵欄制造商 | 撰寫者 | ||
| 漸進式變更主題配置。 | 管理員 | ||
| 從消費者群組中移除成員。 | 讀者 |
綱目登錄動作
使用「綱目登錄」動作,您可以變更綱目版本,例如建立、更新及刪除構件或構件版本 (僅限企業方案)。 構件 是 Event Streams 用來說明相關綱目的術語,通常與特定 Kafka 主題相關聯並由其使用。 術語 主旨 通常用來說明相同的概念。 如需相關資訊,請參閱 使用 Event Streams 綱目登錄。
除了此資源類型所需的原則之外,還需要存取 ResourceType: Cluster 及 Role: Reader, Writer, Manager。
| 綱目登錄動作 | 綱目 |
|---|---|
| 取得最新構件。 | 讀者 |
| 列出版本。 | 讀者 |
| 取得版本。 | 讀者 |
| 依內容取得 meta 資料。 | 讀者 |
| 取得 meta 資料。 | 讀者 |
| 取得版本 meta 資料。 | 讀者 |
| 取得輸入 ID 所識別的綱目字串。 | 讀者 |
| 只擷取輸入 ID 所識別的綱目。 | 讀者 |
| 取得輸入 ID 所識別的主旨-版本配對。 | 讀者 |
| 取得在指定主旨下登錄的版本清單。 | 讀者 |
| 取得構件相容性規則。 | 讀者 |
| 取得在此主旨下登錄的綱目特定版本。 | 讀者 |
| 取得此主體的指定版本的綱目。 | 讀者 |
| 在指定的主體下登錄新綱目 (如果版本已存在的話)。 | 讀者 |
| 請檢查是否已在指定的主體下登錄綱目。 | 讀者 |
| 取得參照具有給定主體和版本之綱目的綱目 ID 清單。 | 讀者 |
| 針對主體綱目的特定版本來測試輸入綱目,以取得相容性。 | 讀者 |
| 根據主體中的一或多個版本,對綱目執行相容性檢查。 | 讀者 |
| 取得主旨的相容性層次。 | 讀者 |
| 在指定的主體下登錄新綱目 (如果要建立版本的話)。 | 撰寫者 |
| 建立構件。 | 撰寫者 |
| 更新構件。 | 撰寫者 |
| 停用構件。 | 撰寫者 |
| 建立版本。 | 撰寫者 |
| 刪除版本。 | 管理員 |
| 更新構件狀態。 | 管理員 |
| 更新版本狀態。 | 管理員 |
| 刪除構件。 | 管理員 |
| 建立構件相容性規則。 | 管理員 |
| 更新構件相容性規則。 | 管理員 |
| 更新指定主旨的相容性層次。 | 管理員 |
| 刪除構件相容性規則。 | 管理員 |
| 刪除指定的主旨及其相關聯的相容性層次 (如果已登錄的話)。 | 管理員 |
| 刪除在此主旨下登錄的綱目特定版本。 | 管理員 |
| 刪除指定的主體層次相容性層次配置,並回復為廣域預設值。 | 管理員 |
| 更新廣域相容性規則。[3] | |
| 更新廣域相容性層次。[4] |
綱目登錄相容性動作
針對與現有應用程式的交互作業,Event Streams 綱目登錄支援 Confluent 綱目登錄 API v7.2 的子集。 若要執行這些動作,您需要下列資源層次存取權。
| 綱目登錄相容性動作 | 綱目 |
|---|---|
| 取得輸入 ID 所識別的綱目字串。 | 讀者 |
| 只擷取輸入 ID 所識別的綱目。 | 讀者 |
| 取得向「綱目登錄」登錄的綱目類型。 | |
| 取得輸入 ID 所識別的主旨-版本配對。 | 讀者 |
| 取得已登錄主旨的清單。 | |
| 取得在指定主旨下登錄的版本清單。 | 讀者 |
| 刪除指定的主旨及其相關聯的相容性層次 (如果已登錄的話)。 | 管理員 |
| 取得在此主旨下登錄的綱目特定版本。 | 讀者 |
| 取得此主體的指定版本的綱目。 | 讀者 |
| 在指定的主體下登錄新綱目。 | 讀者/撰寫者 [5] |
| 請檢查是否已在指定的主體下登錄綱目。 | 讀者 |
| 刪除在此主旨下登錄的綱目特定版本。 | 管理員 |
| 取得參照具有給定主體和版本之綱目的綱目 ID 清單。 | 讀者 |
| 針對主體綱目的特定版本來測試輸入綱目,以取得相容性。 | 讀者 |
| 根據主體中的一或多個版本,對綱目執行相容性檢查。 | 讀者 |
| 更新廣域相容性層次。[6] | |
| 取得廣域相容性層次。 | |
| 更新指定主旨的相容性層次。 | 管理員 |
| 取得主旨的相容性層次。 | 讀者 |
| 刪除指定的主體層次相容性層次配置,並回復為廣域預設值。 | 管理員 |
管理對綱目登錄的存取權
架構註冊表的授權模型使用與本文檔的 管理對Event Streams資源 的授權部分中所述的策略相同的樣式。
IAM 資源
使用新的 schema IAM 資源類型,可以建立使用不同粒度程度控制存取的策略,如以下範例所示。
- 特定綱目。
- 由通配符表達式選取的一組模式。
- IBM Event Streams實例儲存的所有模式。
- 帳戶中IBM Event Streams的所有實例所儲存的所有模式。
Event Streams 已具有叢集資源類型的概念。 它用於控制對服務實例的所有訪問,訪問任何Kafka或 HTTPS 端點需要最小的 Reader 角色。 叢集資源類型的這種使用也適用於模式註冊表,其中存取註冊表需要最低的讀者角色。