星期六, 7月 20, 2019

AWS 以console 及 aws-cli 新增IAM使用者小記

AWS 以console 及 aws-cli 新增IAM使用者小記

有些專案, 同事需要有 AWS console 登入檢視相關資訊的需求
寫一篇小記紀錄如何建立使用者然後給予相關權限

======== Console 方式 ========

登入 AWS Console -- > 點選 IAM 服務  -- > 點選 使用者

點選 新增使用者
輸入 使用者名稱 , 勾選 AWS Management Console 存取, 設定密碼 
確認 使用者必須在下次登入時建立新的密碼已經勾選
點選 下一個:許可


這次要建立的是只有 EC2 檢視的使用者, 官方建議使用群組的方式來管理
在 設定許可畫面中 , 點選建立群組

輸入群組名稱, 以這邊為例 EC2ReadOnlyAccess
搜尋 EC2Re 可以找到 AmazonEC2ReadOnlyAccess 政策
勾選 AmazonEC2ReadOnlyAccess 政策 -- > 建立群組 

確認 EC2ReadOnlyAccess 群組已經勾選 -- > 點選 下一個:標籤


標籤的部份, 因為在Console 沒有辦法輸入中文, 實物上可能有相關需求, 所以我是之後使用指令來完成, 點選 下一個:檢閱


再次瀏覽相關資訊 
點選 建立使用者
點選關閉 完成設定

接下來進行驗證

另外開啟新的瀏覽器到 AWS 登入Console
以剛剛建立好的使用者登入, 
可以嘗試進行相關動作, 但是因為沒有相關權限, 所以應該會得到相關錯誤訊息



另外一種方式是使用指令的方式

======== Console 方式 ========

一樣使用之前建立的 Container with 雲平台工具

OS: Container with openSUSE Leap 15

==== 在主機上面 ====

啟動 container

> docker  run  -v  ~/.aws:/root/.aws -v  ~/.azure:/root/.azure  -v ~/.config/gcloud:/root/.config/gcloud  -v  ~/.ssh:/root/.ssh  -it  sakana/ansible_opensuse15  /bin/bash

==== 在 container 內 ====

參考官方文件

建立使用者

# aws  iam  create-user --user-name  max

{
    "User": {
        "UserName": "max", 
        "Path": "/", 
        "CreateDate": "2019-07-20T03:41:17Z", 
        "UserId": "AIDA2MGTTTNPHXG2DWTKL", 
        "Arn": "arn:aws:iam::781126831704:user/max"
    }
}

給予 console login 權限

# aws iam create-login-profile --user-name max --password YOURPW  --password-reset-required

{
    "LoginProfile": {
        "UserName": "max", 
        "CreateDate": "2019-07-20T03:47:35Z", 
        "PasswordResetRequired": true
    }
}


接下來就是建立群組, 讓使用者加入還有設定政策

# aws  iam  create-group  --group-name EC2ReadOnlyAccess

{
    "Group": {
        "Path": "/", 
        "CreateDate": "2019-07-20T03:54:14Z", 
        "GroupId": "AGPA2MGTWTNTKQRGBFF7U", 
        "Arn": "arn:aws:iam::781126831704:group/EC2ReadOnlyAccess", 
        "GroupName": "EC2ReadOnlyAccess"
    }
}


將政策( Policy ) 加入到群組
在加入政策之前要先先找到相關 政策還有他的 ARN

先觀察相關資訊, 先列出兩個
#aws  iam  list-policies --max-items 2

{
         "Policies": [
        {
                "PolicyName": "AdministratorAccess",
                "CreateDate": "2015-02-06T18:39:46Z",
                "AttachmentCount": 5,
                "IsAttachable": true,
                "PolicyId": "ANPAIWMBCKSKIEE64ZLYK",
                "DefaultVersionId": "v1",
                "Path": "/",
                "Arn": "arn:aws:iam::aws:policy/AdministratorAccess",
                "UpdateDate": "2015-02-06T18:39:46Z"
              },
              {
                "PolicyName": "ASamplePolicy",
        "CreateDate": "2015-06-17T19:23;32Z",
        "AttachmentCount": "0",
        "IsAttachable": "true",
                "PolicyId": "Z27SI6FQMGNQ2EXAMPLE1",
        "DefaultVersionId": "v1",
                "Path": "/",
                "Arn": "arn:aws:iam::781126831704:policy/ASamplePolicy",
                "UpdateDate": "2015-06-17T19:23:32Z"
              }
        ]
}

  • 這邊可以觀察到有 2 種 ARN, 官方ARN以及有帶 使用者帳號ID 的 ARN 

實務上我會使用 list-policies 加上 egrep 方式來找出我想要的
例如 # aws iam list-policies | egrep  '*EC2*' 

這次的作法是要找出 EC2 然後 ReadOnly
所以我會這樣搭配

# aws  iam  list-policies | egrep  -i   '*EC2*ReadOnly*'

            "PolicyName": "AmazonEC2ReadOnlyAccess", 
            "Arn": "arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess", 

  • 這邊一定要用 egrep 而不是 grep

接下來把 找到的 AmazonEC2ReadOnlyAccess 政策套用到群組

# aws  iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess --group-name  EC2ReadOnlyAccess

最後就是把使用者加到群組

# aws  iam  add-user-to-group --user-name max --group-name EC2ReadOnlyAccess


先記下來
~ enjoy it

有關於 IAM 使用者 加上標籤可以參考之前的 Blog


Reference:

沒有留言: