設定 ACK 許可 - Amazon EKS

協助改進此頁面

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

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

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

設定 ACK 許可

ACK 需要 IAM 許可,才能代表您建立和管理 AWS 資源。本主題說明 IAM 如何與 ACK 搭配使用,並提供設定不同使用案例許可的指引。

IAM 如何與 ACK 搭配使用

ACK 使用 IAM 角色對 資源進行身分驗證 AWS 和執行動作。提供許可給 ACK 的方式有兩種:

功能角色:您在建立 ACK 功能時提供的 IAM 角色。根據預設,所有 ACK 操作都會使用此角色。

IAM 角色選取器:可映射至特定命名空間或資源的其他 IAM 角色。這些角色會覆寫其範圍內資源的功能角色。

當 ACK 需要建立或管理資源時,它會決定要使用的 IAM 角色:

  1. 檢查 IAMRoleSelector 是否符合資源的命名空間

  2. 如果找到相符項目,請擔任該 IAM 角色

  3. 否則,請使用 功能角色

此方法可實現從簡單的單一角色設定到複雜多帳戶、多團隊組態的彈性許可管理。

入門:簡易許可設定

對於開發、測試或簡單使用案例,您可以將所有必要的服務許可直接新增至功能角色。

此方法在下列情況下運作良好:

  • 您即將開始使用 ACK

  • 所有資源都在同一個 AWS 帳戶中

  • 單一團隊管理所有 ACK 資源

  • 您信任所有 ACK 使用者都具有相同的許可

生產最佳實務:IAM 角色選取器

對於生產環境,請使用 IAM 角色選取器實作最低權限存取和命名空間層級隔離。

使用 IAM 角色選取器時,能力角色只需要擔任服務特定角色的sts:AssumeRole許可。您不需要將任何 AWS 服務許可 (例如 S3 或 RDS) 新增至功能角色本身,這些許可會授予功能角色擔任的個別 IAM 角色。

在許可模型之間進行選擇

在下列情況下使用直接許可 (將服務許可新增至功能角色):

  • 您正在開始使用,並想要最簡單的設定

  • 所有資源都與您的叢集位於相同的 帳戶中

  • 您有全叢集的管理許可要求

  • 所有團隊都可以共用相同的許可

在下列情況下使用 IAM 角色選取器

  • 跨多個 AWS 帳戶管理資源

  • 不同的團隊或命名空間需要不同的許可

  • 您需要每個命名空間的精細存取控制

  • 您想要遵循最低權限的安全實務

您可以從直接許可開始,稍後隨著需求增長遷移至 IAM 角色選取器。

為什麼在生產環境中使用 IAM 角色選取器:

  • 最低權限:每個命名空間只會取得所需的許可

  • 團隊隔離:團隊 A 不會意外使用團隊 B 的許可

  • 更容易稽核:明確映射哪個命名空間使用哪個角色

  • 跨帳戶支援:管理多個帳戶中的資源時需要

  • 問題分離:不同的服務或環境使用不同的角色

基本 IAM 角色選取器設定

步驟 1:建立服務特定的 IAM 角色

建立具有特定 AWS 服務許可的 IAM 角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": "*" } ] }

設定信任政策以允許能力角色擔任它:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole" }, "Action": "sts:AssumeRole" } ] }

步驟 2:將 AssumeRole 許可授予能力角色

將許可新增至 功能角色,以擔任服務特定角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/ACK-S3-Role" } ] }

步驟 3:建立 IAMRoleSelector

將 IAM 角色映射至命名空間:

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: s3-namespace-config spec: arn: arn:aws:iam::111122223333:role/ACK-S3-Role namespaceSelector: names: - s3-resources

步驟 4:在映射的命名空間中建立資源

s3-resources 命名空間中的資源會自動使用指定的角色:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-bucket namespace: s3-resources spec: name: my-production-bucket

多帳戶管理

使用 IAM 角色選取器來管理多個 AWS 帳戶的資源。

步驟 1:建立跨帳戶 IAM 角色

在目標帳戶 (444455556666 中,建立信任來源帳戶能力角色的角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole" }, "Action": "sts:AssumeRole" } ] }

將服務特定的許可連接到此角色。

步驟 2:授予 AssumeRole 許可

在來源帳戶 (111122223333) 中,允許能力角色擔任目標帳戶角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::444455556666:role/ACKTargetAccountRole" } ] }

步驟 3:建立 IAMRoleSelector

將跨帳戶角色映射至命名空間:

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: production-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production

步驟 4:建立資源

production 命名空間中的資源會在目標帳戶中建立:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-bucket namespace: production spec: name: my-cross-account-bucket

進階 IAM 角色選取器模式

如需進階組態,包括標籤選擇器、資源特定角色映射和其他範例,請參閱 ACK IRSA 文件

後續步驟