aws eks iam user access 權(quán)限管理 admin & dev

rbac

0x00 TLNR;

一般情況下對aws eks 創(chuàng)建集群后, 只有創(chuàng)建者才有集群的完全訪問權(quán)限.
那么現(xiàn)在有一個需求: 對其他admin IAM 賬號開通 eks 集群訪問權(quán)限

0x01 IAM 賬號創(chuàng)建

可以直接在 IAM console 頁面手動添加管理員賬號, 以 eksadmin 用戶名為例.

0x02 RBAC 基礎(chǔ)知識

參考: https://jimmysong.io/kubernetes-handbook/concepts/rbac.html
參考: https://www.qikqiak.com/post/use-rbac-in-k8s/
K8s中的RBAC有以下幾個名詞:

2.1 Entity

定義了對資源進(jìn)行操作的主體, 比如: User, Group, ServiceAccount 等

2.2 Resource

K8s中的資源類型, 比如: pod,service,secret,node等

2.3 Role & ClusterRole

  • Role: 關(guān)聯(lián)到特定namespace下的角色
  • ClusterRole: 集群全局作用域的角色

2.4 RoleBinding & ClusterRoleBinding

把Role/ClusterRole 和 Entity 進(jìn)行關(guān)聯(lián).實現(xiàn)授權(quán)功能.

0x03 綁定操作

以下操作都是在原來的集群管理員下完成

  • 創(chuàng)建k8s 用戶, 完成集群用戶和 IAM賬號的綁定
# 在線編輯集群用戶配置
kubectl edit cm aws-auth -n kube-system

添加mapUsers節(jié)點:

apiVersion: v1
data: 
  mapUsers: |
    - userarn: arn:aws-cn:iam::{你的12位主賬號}:user/eksadmin
      username: eksadmin
      groups:
        — system:masters

保存退出后, 此時執(zhí)行 kubectl get all 會提示權(quán)限不夠.
但是也說明, 已經(jīng)完成了IAM賬號和集群賬號的關(guān)聯(lián)綁定.

原本以為, 加上groups 參數(shù)就有管理權(quán)限了, 實測不行, 繼續(xù)下面的操作

  • 重點 給用戶綁定集群的管理員權(quán)限
kubectl create clusterrolebinding eksadmin --clusterrole=cluster-admin --user=eksadmin

再次訪問 kubectl get all , everything goes OK.
任務(wù)達(dá)成~.

0x04 指定namespace訪問權(quán)限

目標(biāo): 對開發(fā)者組的同學(xué)開放sit namespace 的完全訪問

4.1 創(chuàng)建Role

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: sit-role
  namespace: sit
rules:
  - apiGroups: ["", "extensions", "apps"]
    resources: ["deployments", "replicasets", "pods", "configmaps","services"]
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

4.2 創(chuàng)建測試用戶

  • 創(chuàng)建用戶
aws iam create-user --user-name dev-gg

返回結(jié)果

{
    "User": {
        "Path": "/",
        "UserName": "dev-gg",
        "UserId": "AI******5",
        "Arn": "arn:aws-cn:iam::{你的12位主賬號}:user/dev-gg",
        "CreateDate": "2022-03-28T06:01:10+00:00"
    }
}

記錄生成的 arn, 后面要用

  • 創(chuàng)建access key/secrets
aws iam create-access-key --user-name dev-gg

返回結(jié)果

{
    "AccessKey": {
        "UserName": "dev-gg",
        "AccessKeyId": "***",
        "Status": "Active",
        "SecretAccessKey": "***",
        "CreateDate": "2022-03-28T06:04:50+00:00"
    }
}

記錄 AceessKey, 和 Secret.

  • 創(chuàng)建IAM 策略
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "eks:DescribeCluster",
            "Resource": "arn:aws-cn:eks:*:{你的12位主賬號}:cluster/*"
        }
    ]
}

策略ARN: arn:aws-cn:iam::{12位主賬號}:policy/eks_desc_cluster

  • 綁定到測試用戶
aws iam attach-user-policy --user-name dev-gg --policy-arn arn:aws-cn:iam::{12位主賬號}:policy/eks_desc_cluster

4.3 配置集群中的賬號

kubectl edit cm aws-auth -n kube-system

增加用戶:

  mapUsers: |
    - userarn: arn:aws-cn:iam::{12位賬號}:user/dev-gg
      username: dev-gg

4.4 綁定用戶角色

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dev-gg
  namespace: sit
subjects:
  - kind: User
    name: dev-gg
    apiGroup: ""
roleRef:
  kind: Role
  name: sit-role
  apiGroup: ""

4.5 驗證

  • 綁定登錄信息
    把步驟4.2的secret key 信息配置到用戶目錄
aws configure
AWS Access Key ID [None]: A***O
AWS Secret Access Key [None]: 0***p
Default region name [None]: cn-northwest-1
Default output format [None]: json
  • 拉取集群配置
aws eks update-kubeconfig --name aws-cn
Added new context arn:aws-cn:eks:cn-northwest-1:{12位賬號}:cluster/aws-cn to /Users/dev-gg/.kube/config
  • 部署&刪除測試應(yīng)用
kubectl create deploy web --image=nginx -n sit
kubectl get po -n sit
NAME                  READY   STATUS              RESTARTS   AGE
web-96d5df5c8-t8n8z   0/1     ContainerCreating   0          16m

kubectl delete deploy web  -n sit
deployment.apps "web" deleted

Good Job ~

4.6 關(guān)于增加其他權(quán)限

如果在使用中遇到權(quán)限問題:

kubectl get hpa -n sit
Error from server (Forbidden): horizontalpodautoscalers.autoscaling is forbidden: User "dev-gg" cannot list resource "horizontalpodautoscalers" in API group "autoscaling" in the namespace "sit"

只需要把日志中的 資源(horizontalpodautoscalers) 和 API Group(autoscaling) 添加到 role 配置中 apiGroups 和 resources 字段即可.

至此,我們完成了, AWS EKS 關(guān)于集群權(quán)限的基礎(chǔ)精細(xì)化控制.

0x05 后續(xù)

在集群中為開發(fā)者創(chuàng)建 group , 后續(xù)增加開發(fā)者用戶時, 只要關(guān)聯(lián)用戶到 group 即可.

答案在這里: http://www.reibang.com/p/525f90e46e5d

0x07 新增

一條指令完成iam 賬號向 k8s 添加
參考來源: https://repost.aws/knowledge-center/eks-api-server-unauthorized-error

eksctl create iamidentitymapping \
    --cluster $CLUSTER-NAME \
    --region $REGION \
    --arn arn:aws:iam::XXXXXXXXXXXX:user/testuser \
    --group system:masters \
    --no-duplicate-arns \
    --username admin-user1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末家破,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昌渤,更是在濱河造成了極大的恐慌灶轰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糙俗,死亡現(xiàn)場離奇詭異缆毁,居然都是意外死亡荔棉,警方通過查閱死者的電腦和手機酝锅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門诡必,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搔扁,你說我怎么就攤上這事爸舒。” “怎么了稿蹲?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵扭勉,是天一觀的道長。 經(jīng)常有香客問我苛聘,道長涂炎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任设哗,我火速辦了婚禮璧尸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熬拒。我一直安慰自己,他們只是感情好垫竞,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布澎粟。 她就那樣靜靜地躺著蛀序,像睡著了一般。 火紅的嫁衣襯著肌膚如雪活烙。 梳的紋絲不亂的頭發(fā)上徐裸,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音啸盏,去河邊找鬼重贺。 笑死,一個胖子當(dāng)著我的面吹牛回懦,可吹牛的內(nèi)容都是我干的气笙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼怯晕,長吁一口氣:“原來是場噩夢啊……” “哼潜圃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舟茶,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤谭期,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吧凉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隧出,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年阀捅,在試婚紗的時候發(fā)現(xiàn)自己被綠了胀瞪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡也搓,死狀恐怖赏廓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情傍妒,我是刑警寧澤幔摸,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站颤练,受9級特大地震影響既忆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嗦玖,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一患雇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宇挫,春花似錦苛吱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绘雁。三九已至,卻和暖如春援所,著一層夾襖步出監(jiān)牢的瞬間庐舟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工住拭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挪略,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓滔岳,卻偏偏與公主長得像杠娱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子澈蟆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容