Cloud/AWS

IAM 기본

NOG 2024. 11. 3. 04:41

IAM

 
AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 서비스로, 사용자, 그룹, 역할을 생성하고,
이들에게 다양한 권한을 부여할 수 있다.
AWS Oraganiztion에서 SCP, OU, Policy를 통해 조직 내 여러 AWS 계정의 권한을 관리할 수 있다.
 
 
 

IAM 구성

 
 
 

1) 사용자 ( 사람 혹은 application)

 
 

2. 그룹  ( 사용자의 집합)


 

3. 정책 ( 권한을 정의하고 있는 JSON 형식 문서)

 
사용자,그룹,역할 이 무엇을 할 수 있는 지에 관한 문서. JSON으로 정의
 
 
Effect": "Allow"
=> 특정 작업을 허용.
 
"Action": "iam:CreateServiceLinkedRole"
=> IAM 서비스에서 서비스와 연관된 역할을 생성하는 작업에 대한 권한
 
"Resource": "*"
=> 어떤 리소스에 대해서도 역할을 생성가능
 
=> "Condition": 조건
 
 
 
 

4. 역할 ( AWS의 권한의 집합) 

Role

 
역할(Role)은 하나 이상의 정책(Policy)을 기반으로 구성
IAM  사용자, AWS 서비스, 어플리케이션 등이 부여받아 활동할 수 있게 한다.
 
 
 
 
 
IAM에서 AWS 계정에 대한 별칭 생성(awsnog) 후
 

aws 콘솔에 들어갈 수 있는 access 권한을 제공할 것이면 체크 후 iam 사용자를 생성할 수 있다.
생성한 사용자에게 비밀번호를 바꾸게 하고 싶으면 권장사항을 체크하면 된다.
 

 
해당 창에서 별칭, 사용자이름, 비밀번호를 입력하여 로그인할 수 있게 된다.
 
 
 
 
 
 

IAM test user 생성

 

 
 
테스트하기 위해  IAM 생성 시
콘솔로 로그인 할 것이 아니기 때문에 AWS Management Console 에 대한 부분은 체크하지 않고 ex_test_iam 유저 생성
 
 


IAM  - 해당 사용자 - 보안자격증명
액세스 키를 통하여 사용자가 가지고 있는 권한(IAMReadOnlyAccess)을 행사할 수 있다.
비밀 액세스 키를 볼 수 있는 게 마지막이다.
 
access key를 활용해서 해당 사용자가 가지고 있는 권한을 행사할 수 있다.
 
 

IAM에서 권한을 받아 AWS에 Access하는 2가지 방식  (인증방식)

 

 
-secret access key는 발급 시점만 확인 가능
-iam 사용자를 서버/프로그램 별로 생성하여 access key 전달하여 사용
=>acces key 코드에 입력 혹은 별도 파일에 자격증명 저장
 

1. AWS 웹 콘솔 

 

2. 프로그래밍 액세스  방식

 
프로그램적으로 AWS 서비스와 연동/접근하고 싶을 때 사용한다.

1) CLI

ubuntu가 설치된 ec2에서 실습해보았다.
 

 
 

 
 

2) SDK

python에서 boto3 라이브러리를 이용하여 AM 클라이언트를 생성하고, 사용자 목록을 출력하였다.
 

import boto3
from botocore.exceptions import BotoCoreError, ClientError

def run():
    # IAM 클라이언트 생성
    client = boto3.client(
        'iam',
        region_name='ap-northeast-2',  # 리전 설정
        aws_access_key_id='your_access_key_id',  # 액세스 키 ID
        aws_secret_access_key='your_secret_access_key'  # 비밀 액세스 키

    )

    # 사용자 목록 출력
    print("print User list")
    try:
        response = client.list_users()
        for user in response['Users']:
            print(user['UserName'])  # 사용자 이름 출력
    except (BotoCoreError, ClientError) as error:
        print(f"오류 발생: {error}")  # 오류 처리

if __name__ == "__main__":
    run()

 

 

<출력 결과>

 
 
 


 
https://whchoi98.gitbook.io/aws-iam

'Cloud > AWS' 카테고리의 다른 글

S3 vs EBS vs EFS  (0) 2024.11.25
VPC Endpoints & VPC  (0) 2024.11.23
Autoscaling Group & ALB  (0) 2024.11.20
IAM User가 아닌 EC2에 역할 부여  (0) 2024.11.20
클라우드 와 온프레미스  (2) 2024.10.31