Ansible을 사용하여 AWS IAM 사용자 생성 및 관리
10819 단어 ansibleautomationawscloud
이제 로그인 프로필인 자격 증명과 액세스 키(선택 사항)와 함께 IAM 사용자를 생성하겠습니다. 그런 다음 회사에 새 직원이 있고 AWS를 통해 액세스해야 하기 때문에 일부 IAM 사용자를 생성해야 하는 경우에 대비합니다. 여기서 우리는 ansible을 사용할 것입니다. 이것이 여기서 ansible을 사용하는 주요 포인트입니다. 한 번의 클릭으로 여러 사용자를 생성하는 여러 작업에 사용할 수 있습니다! 와우, 어떻게 되어가나요? 변수와 태그를 가지고 놀기만 하면 됩니다!
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
그러나 액세스 키와 비밀 액세스 키 정보도 필요하므로 첫 번째 옵션을 사용하겠습니다. 쉘 명령으로 이동하면 두 번째 옵션이 출력을 제공하지 않고 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
이제
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. 사용자 생성 및 관리형 정책 첨부
사용자를 생성하는 것 외에도 사용자를 생성하고 관리형 정책을 연결할 수도 있습니다. 글쎄요, 이것은 최선의 방법은 아니지만 여기서 우리가 ansible로 이것을 할 수 있다는 것을 보여드리겠습니다.
다음 변수를 인벤토리에 추가합니다.
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'})
자, 이제
IAMFullAccess
정책이 연결된 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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"
--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
Reference
이 문제에 관하여(Ansible을 사용하여 AWS IAM 사용자 생성 및 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/chapter-2-iam-user-58d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)