を使用してAWSのIAMのユーザーを作成し、管理


では、iamユーザから始めましょう.私が第1部に言及したように、あなたはAWS(ルート)アカウントを作成した後にあなたが必要とする最初のサービスです.AWSで何をしたいのかroot rootアカウントを使うのは本当に安全ではありません.そんなことをするな
さて、ログインプロファイルとアクセスキーである資格情報と共にIAMユーザを作成します.それから、あなたの会社が新しい従業員を持っていて、AWSを通してアクセスを必要とするので、あなたはいくつかのIAMユーザーをつくる必要があります.ここでは、我々はansibleを使用するつもりです.それはここで使用可能な使用の主なポイントです.我々は複数のタスクを1つだけクリックして複数のユーザーを作成するために使用することができます!わあ、どうやって行くの?我々は、変数とタグを再生する必要があります!
IAMのユーザーのために、我々は使用するcommunity.aws.iam_user モジュールです.
1 .ユーザ
    - name: create user
      community.aws.iam_user:
        name: "{{ item }}"
        state: present
      loop: "{{ user_new }}"
      tags:
        - iam_user_new ### create user + pass + key
        - iam_user_only ### create user only
        - iam_user_key ### create user + key
        - iam_user_pass ### create user + pass
このタスクは新しいユーザを作成します.ご覧の通り変数を使いますuser_new と4つのタグ.使い方を教えてあげましょう.
  • ループは、変数の複数の値に対して同じタスクを再生します.インベントリに戻ると、変数を定義します.これは、タスクの値よりも在庫の値を変更する方が良いです.それで、それはあなたを混乱させません.在庫は、次のような追加の変数が必要です.
  •       user1: nurul
          user2: rama
          user3: beny
          user4: rahman
          user_new:
            - "{{ user1 }}"
            - "{{ user2 }}"
            - "{{ user3 }}"
            - "{{ user4 }}"
          user_key:
            - { name: "{{ user1 }}" }
            - { name: "{{ user2 }}" }
            - { name: "{{ user3 }}" }
            - { name: "{{ user4 }}" }
          user_pass:
             - { name: "{{ user1 }}", pass: "{{ temp_pass }}" }
             - { name: "{{ user2 }}", pass: "{{ temp_pass }}" }
             - { name: "{{ user3 }}", pass: "{{ temp_pass }}" }
             - { name: "{{ user4 }}", pass: "{{ temp_pass }}" }
    
  • タグは、我々が実行するタスクを選択する自由を与える.たとえば、私はただ資格情報なしでユーザーを作成したいだけです.それで、私はちょうどiam_user_only タグ.その後、パスワードだけでユーザーを作成したい.一緒に行きましょうiam_user_pass タグ.それは私たちがタグで遊ぶ方法です.
  • 2 .ユーザのアクセスキーを作成する
        - name: create user's key
          shell: 'aws iam create-access-key --user-name "{{ item.name }}" >> key_list.txt'
          loop: "{{ user_key }}"
          tags:
            - iam_user_new
            - iam_user_key
            - iam_user_key_only
    
        - name: list user's key
          shell: 'cat key_list.txt | grep "UserName\|AccessKeyId\|SecretAccessKey" | sed "s/,$//"'
          register: list_key
          tags:
            - iam_user_new
            - iam_user_key
    
        - debug:
            var: list_key.stdout_lines
          tags:
            - iam_user_new
            - iam_user_key
    
    アクセスキーの場合、シェルコマンドと組み合わせます.実際にそれを作成するモジュールがありますcommunity.aws.iam_access_key そして、このように見えます.
        - name: create user's key
          community.aws.iam_access_key:
            user_name: "{{ item }}"
            state: present
          loop: "{{ user_key }}"
          tags:
            - iam_user_new
            - iam_user_key
    
    しかし、私たちはアクセスキーと秘密のアクセスキー情報も必要とするので、私はシェルコマンドで行く最初のオプションで行くつもりです、2番目のものが出力を与えていないので、我々はCLIを使用するので、我々はコンソールでできるように直接アクセスキーファイルをダウンロードすることができません.それで、私はアクセスキーを作成するために3つの仕事を結合して、ファイルに出力を保存して、我々が必要とする価値を示します.そういうわけだ!
    3 .ユーザのパスワードを作成する
        - name: create user's password
          command: aws iam create-login-profile --user-name "{{ item.name }}" --password "{{ item.pass }}" --password-reset-required
          loop: "{{ user_pass }}"
          tags:
            - iam_user_new
            - iam_user_pass
    
    今、私はすべてのタスクを使用してPlayBookを実行しますiam_user_new タグとパスワードとアクセスキーと一緒に4新しいユーザーを作成します.
    $ ansible-playbook -i host.yml iam.yml -t iam_user_new
    
    PLAY [iam] *************************************************************************
    
    TASK [create user] *****************************************************************
    changed: [localhost] => (item=nurul)
    changed: [localhost] => (item=rama)
    changed: [localhost] => (item=beny)
    changed: [localhost] => (item=rahman)
    
    TASK [create user's key] ***********************************************************
    changed: [localhost] => (item={'name': 'nurul'})
    changed: [localhost] => (item={'name': 'rama'})
    changed: [localhost] => (item={'name': 'beny'})
    changed: [localhost] => (item={'name': 'rahman'})
    
    TASK [list user's key] *************************************************************
    changed: [localhost]
    
    TASK [debug] ***********************************************************************
    ok: [localhost] => {
        "list_key.stdout_lines": [
            "        \"UserName\": \"nurul\"",
            "        \"AccessKeyId\": \"AKIAZ44MXOFLL5MRZWON\"",
            "        \"SecretAccessKey\": \"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\"",
            "        \"UserName\": \"rama\"",
            "        \"AccessKeyId\": \"AKIAZ44MXOFLL36LYJKV\"",
            "        \"SecretAccessKey\": \"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\"",
            "        \"UserName\": \"beny\"",
            "        \"AccessKeyId\": \"AKIAZ44MXOFLCMV33DHV\"",
            "        \"SecretAccessKey\": \"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\"",
            "        \"UserName\": \"rahman\"",
            "        \"AccessKeyId\": \"AKIAZ44MXOFLDJASSSVD\"",
            "        \"SecretAccessKey\": \"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\""
        ]
    }
    
    TASK [create user's password] ******************************************************
    changed: [localhost] => (item={'name': 'nurul', 'pass': 'passwordup2U!'})
    changed: [localhost] => (item={'name': 'rama', 'pass': 'passwordup2U!'})
    changed: [localhost] => (item={'name': 'beny', 'pass': 'passwordup2U!'})
    changed: [localhost] => (item={'name': 'rahman', 'pass': 'passwordup2U!'})
    
    注意*:他の誰にもアクセスキーを表示しないでください.これは私が後で削除しようとする例です.
    上記のタスクを実行した後、4ユーザーと一緒にパスワードとアクセスキーがあります.リセットパスワードは、各ユーザーに必要なことを覚えて、チェックしましょう!


    動く.パスワードを入力した後にリセットパスワード命令が表示されます.
    4 .ユーザの作成と管理ポリシーの作成
    ユーザーの作成に加えて、ユーザーを作成し、マネージポリシーをアタッチできます.まあ、これは最高の練習ではないが、ここで私は、我々はこれを行うことができますが表示されます.
    この変数をインベントリーに追加します.
          user_new_policy:
            - { name: "{{ user5 }}", policy: arn:aws:iam::aws:policy/IAMFullAccess }
    
    課題:
        - name: create a user and attach a managed policy
          community.aws.iam_user:
            name: "{{ item.name }}"
            managed_policies: "{{ item.policy }}"
            state: present
          loop: "{{ user_new_policy }}"
          tags:
            - iam_user_new_policy
    
    それでは、脚本を使いますiam_user_new_policy タグ.
    $ ansible-playbook -i host.yml iam.yml -t iam_user_new_policy
    
    PLAY [iam] *************************************************************************
    
    TASK [create a user and attach a managed policy] ***********************************
    changed: [localhost] => (item={'name': 'aira', 'policy': 'arn:aws:iam::aws:policy/IAMFullAccess'})
    
    さて、今私たちは1つ以上のユーザーとAiraIAMFullAccess ポリシーを添付.確かめましょう!
  • ユーザーAiraのアクセスキーを作成します.変数の更新とタスクの特定のタグの使用を忘れないでください.
  •       user_key:
    #        - { name: "{{ user1 }}" }
    #        - { name: "{{ user2 }}" }
    #        - { name: "{{ user3 }}" }
    #        - { name: "{{ user4 }}" }
            - { name: "{{ user5 }}" }
    
    $ ansible-playbook -i host.yml iam.yml -t iam_user_key_only
    
    PLAY [iam] *************************************************************************
    
    TASK [create user's key] ***********************************************************
    changed: [localhost] => (item={'name': 'aira'})
    
    $ cat key_list.txt | grep -A3 aira | grep -v Status 
            "UserName": "aira",
            "AccessKeyId": "AKIAZ44MXOFLNSZ6RO3F",
            "SecretAccessKey": "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"
    
  • セットアップiamユーザー.追加できます--profile デフォルトのユーザとして使用しない場合.
  • $ aws configure --profile aira
    AWS Access Key ID [None]: AKIAZ44MXOFLNSZ6RO3F
    AWS Secret Access Key [None]: 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
    Default region name [None]: 
    Default output format [None]:
    
    $ cat ~/.aws/credentials | grep -A2 aira
    [aira]
    aws_access_key_id = AKIAZ44MXOFLNSZ6RO3F
    aws_secret_access_key = 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
    
  • ポリシーアクセスを確認します
  • $ aws iam create-user --user-name test --profile aira | grep UserName
            "UserName": "test",
    
    $ aws iam delete-user --user-name test --profile aira
    
    $ aws iam get-user --user-name test --profile aira
    
    An error occurred (NoSuchEntity) when calling the GetUser operation: The user with name test cannot be found.
    
    動く.あなたが見ることができるように我々は作成し、ユーザーを削除できます.
    それは第2部です.私はこのポストに対するあなたの愛に感謝します、そして、あなたが役に立つならば、共有してください.ありがとう.IAMユーザーグループのパート3に移動しましょう.
    参照:https://docs.ansible.com/ansible/latest/collections/community/aws/iam_user_module.html