
IAM Policies Structure
IAM JSON 파일은 AWS에서 IAM(Identity and Access Management) 정책을 정의할 때 사용되는 파일 형식이다. 이 파일은 JSON형식으로 작성되며, 사용자, 그룹, 역할(Role) 등에 대한 권한(permissions)을 설정하는 데 쓰인다.
IAM JSON Structure
IAM JSON 파일은 AWS 리소스에 대해 허용(Allow)하거나 거부(Deny)할 작업을 명시하는 정책(policy)을 정의한다.
이를 통해 어떤 사용자가 어떤 AWS 서비스에서 어떤 작업을 수행할 수 있는지를 제어한다.
JSON 파일 예시

JSON 파일 필드
Consists of
• Version: policy language version, always include “2012 -10 - 17”
• Id: an identifier for the policy (optional)
• Statement: one or more individual statements (required)
Statements consists of
• Sid: an identifier for the statement (optional)
• Effect: whether the statement allows or denies access (Allow, Deny)
• Principal: account/user/role to which this policy applied to (Optional)
• Action: list of actions this policy allows or denies
• Resource: list of resources to which the actions applied to • Condition: conditions for when this policy is in effect (optional)
• Condition: conditions for when this policy is in effect (optional)

전체 정책에 대해서 Optional top-level elements가 있고 여기에 여러 개의 Statement 를 추가하는 방식으로 구성되어 있다.
그리고 하나의 Statement에는 여러개의 permission 정보가 포함 되어있다.

사용자 그룹에서 해제하기
Ash 사용자를 Admin 그룹에서 제거하는 법
Root 계정으로 IAM 콘솔 > Users 탭 > 사용자명 > Groups 클릭 > 그룹명에 체크 > Remove

Ash 계정으로 접속하면 Access Denied

사용자를 그룹 다시 추가하기
Root 계정으로 IAM 콘솔 > Users 탭 > 사용자명 > Permissions > Add Permissionis
Policies (정책)
Root 계정으로 IAM 콘솔 > Policies 탭 > Permissions 에서 Administrator Access 는 AWS 의 모든 서비스를 허용함
Administrator Access

이 정책의 JSON 파일을 보면 * 로 표기됨
* (Anything) = 어느 Resource 에서, 어떤 Action 이든 허용
그렇다는 건 관리자 엑세스를 받는 것과 권한이 정확히 일치한다는 뜻.

IAMReadOnlyAccess
이 정책은 Full: List Limited: Read

위 화면에서 IAM누르고 permissions 페이지로 가면 이 정책의 일부로서 허용된모든 API 목록을 볼 수 있다.

JSON 파일을 살펴보면
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:GenerateCredentialReport",
"iam:GenerateServiceLastAccessedDetails",
"iam:Get*",
"iam:List*",
"iam:SimulateCustomPolicy",
"iam:SimulatePrincipalPolicy"
],
"Resource": "*"
}
]
}
iam:Get*
GET으로 시작하는 것들 모두 호출 가능 (예: GETUSERS, GETGROUPS 등)
사용자 정의 Policy(정책) 추가하기
우측 상단의 Create policy

Policy editor
- Visual 모드에서는 직관적으로 체크박스를 통해 옵션 선택(Actions Allowed, Resource 등 지정 가능)
- JSON 모드에서는 직접적으로 JSON 파일을 수정할 수 있음.

생성한 Users, Groups 보호
- 비밀번호 정책 설정
- MFA(Multi Factor Authentication)
IAM – Password Policy
• Strong passwords = higher security for your account
• In AWS, you can setup a password policy:
- Set a minimum password length
- Require specific character types: ncluding uppercase letters, lowercase letters, numbers, non-alphanumeric characters
- Allow all IAM users to change their own passwords
- Require users to change their password after some time (password expiration) : 비밀번호 변경 주기
- Prevent password re-use : 같은 비밀번호 사용하지 않기
MFA(Multi Factor Authentication) - 다중인증
• In AWS, very recommended to use, and essential
• You want to protect your Root Accounts and IAM users
• MFA = password you know + security device you own
- 한 마디로 유저의 비밀번호 + MFA 토큰 조합으로 계정 보호하는 것
- 유저가 비밀번호를 분실하거나 해킹당해도 해커가 유저의 물리적 장치도 확보해야 하므로 매우 안전한 계정 보호 방법이다.

MFA 장치
- Google Authenticator(phone only)
- Authy(phone only)
Above two is support for multiple tokens on a single device.
- Universal 2nd Factor(U2F) Security Key
물리적인 장치, 반드시 AWS 에서 제공하는 것은 아님
단일 보안키만 사용 가능
하드웨어 보안 토큰

MFA 설정 실습
1. 비밀번호 보안 설정

IAM 대시보드 > Account settings > Password Policy > Edit > Custom

- 비밀번호 최소 길이 지정
- 대문자, 소문자, 숫자, 영숫자가 아닌 문자
- 비밀번호 만료 기능 - n 일 후에 비밀번호 만료
- 비밀번호 만료시 관리자가 재설정하도록 설정
- 사용자가 직접 재설정 하도록 설정
- 비밀번호 재사용 방지
2. 루트 계정에 대한 다단계 인증 설정 MFA
우측 상단 계정 이름 클릭 > 보안 자격 증명 클릭(Security Credentials)


AWS 계정에서 가장 중요한 계정인 루트 사용자를 보호하기 위해 MFA 인증 설정 해 주자
하지만 다중 읹으 장치에 대한 액세스 권한을 잃어버리면 계정에서 락아웃 당하기 때문에
핸드폰 등을 분실할 위험이 있으면 안 하는 것이 좋다.
그리고 MFA 장치를 설정한 후 해제 할 수도 있다.
Assign MFA > Select MFA device > 장치 지정하고 Device name 설정
스마트폰이면 Authenticator app 으로 지정하면 됨


Set up your authenticator app
스마트폰 유형에 맞는 앱을 설치해야 함.

휴대폰에서 앱 실행 후 QR 코드 표시 클릭
show QR Code > 코드 스캔

코드 스캔하면 Account Name 설정 화면으로 이동
폰에서 실시간으로 발급된 MFA code 1 을 AWS 페이지에 입력
MFA code 2 까지 입력 > MFA 추가 > 장치 등록 완료
최대 8개까지 장치 등록 가능
이제 루트 계정으로 로그인 할 때 MFA code 창이 뜸
해당 코드를 입력해야만 로그인 가능하기 때문에 계정 보안 수준이 강화됨
'AWS' 카테고리의 다른 글
[AWS] 실습6일차 - AWS 예산 관리 Billing and Cost Managetment (setting Budget) (9) | 2025.01.22 |
---|---|
[AWS] 실습5일차 - IAM & IAM CLI 문제 / 정리 (21) | 2025.01.21 |
[AWS] 실습4일차 - AWS IAM ROLE, IAM 보안도구 등 (14) | 2025.01.20 |
[AWS] 실습3일차 - AWS Access Key, CLI & SDK (6) | 2025.01.19 |
[AWS] 실습1일차 - IAM: Users & Groups (4) | 2025.01.15 |

IAM Policies Structure
IAM JSON 파일은 AWS에서 IAM(Identity and Access Management) 정책을 정의할 때 사용되는 파일 형식이다. 이 파일은 JSON형식으로 작성되며, 사용자, 그룹, 역할(Role) 등에 대한 권한(permissions)을 설정하는 데 쓰인다.
IAM JSON Structure
IAM JSON 파일은 AWS 리소스에 대해 허용(Allow)하거나 거부(Deny)할 작업을 명시하는 정책(policy)을 정의한다.
이를 통해 어떤 사용자가 어떤 AWS 서비스에서 어떤 작업을 수행할 수 있는지를 제어한다.
JSON 파일 예시

JSON 파일 필드
Consists of
• Version: policy language version, always include “2012 -10 - 17”
• Id: an identifier for the policy (optional)
• Statement: one or more individual statements (required)
Statements consists of
• Sid: an identifier for the statement (optional)
• Effect: whether the statement allows or denies access (Allow, Deny)
• Principal: account/user/role to which this policy applied to (Optional)
• Action: list of actions this policy allows or denies
• Resource: list of resources to which the actions applied to • Condition: conditions for when this policy is in effect (optional)
• Condition: conditions for when this policy is in effect (optional)

전체 정책에 대해서 Optional top-level elements가 있고 여기에 여러 개의 Statement 를 추가하는 방식으로 구성되어 있다.
그리고 하나의 Statement에는 여러개의 permission 정보가 포함 되어있다.

사용자 그룹에서 해제하기
Ash 사용자를 Admin 그룹에서 제거하는 법
Root 계정으로 IAM 콘솔 > Users 탭 > 사용자명 > Groups 클릭 > 그룹명에 체크 > Remove

Ash 계정으로 접속하면 Access Denied

사용자를 그룹 다시 추가하기
Root 계정으로 IAM 콘솔 > Users 탭 > 사용자명 > Permissions > Add Permissionis
Policies (정책)
Root 계정으로 IAM 콘솔 > Policies 탭 > Permissions 에서 Administrator Access 는 AWS 의 모든 서비스를 허용함
Administrator Access

이 정책의 JSON 파일을 보면 * 로 표기됨
* (Anything) = 어느 Resource 에서, 어떤 Action 이든 허용
그렇다는 건 관리자 엑세스를 받는 것과 권한이 정확히 일치한다는 뜻.

IAMReadOnlyAccess
이 정책은 Full: List Limited: Read

위 화면에서 IAM누르고 permissions 페이지로 가면 이 정책의 일부로서 허용된모든 API 목록을 볼 수 있다.

JSON 파일을 살펴보면
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GenerateCredentialReport", "iam:GenerateServiceLastAccessedDetails", "iam:Get*", "iam:List*", "iam:SimulateCustomPolicy", "iam:SimulatePrincipalPolicy" ], "Resource": "*" } ] }
iam:Get*
GET으로 시작하는 것들 모두 호출 가능 (예: GETUSERS, GETGROUPS 등)
사용자 정의 Policy(정책) 추가하기
우측 상단의 Create policy

Policy editor
- Visual 모드에서는 직관적으로 체크박스를 통해 옵션 선택(Actions Allowed, Resource 등 지정 가능)
- JSON 모드에서는 직접적으로 JSON 파일을 수정할 수 있음.

생성한 Users, Groups 보호
- 비밀번호 정책 설정
- MFA(Multi Factor Authentication)
IAM – Password Policy
• Strong passwords = higher security for your account
• In AWS, you can setup a password policy:
- Set a minimum password length
- Require specific character types: ncluding uppercase letters, lowercase letters, numbers, non-alphanumeric characters
- Allow all IAM users to change their own passwords
- Require users to change their password after some time (password expiration) : 비밀번호 변경 주기
- Prevent password re-use : 같은 비밀번호 사용하지 않기
MFA(Multi Factor Authentication) - 다중인증
• In AWS, very recommended to use, and essential
• You want to protect your Root Accounts and IAM users
• MFA = password you know + security device you own
- 한 마디로 유저의 비밀번호 + MFA 토큰 조합으로 계정 보호하는 것
- 유저가 비밀번호를 분실하거나 해킹당해도 해커가 유저의 물리적 장치도 확보해야 하므로 매우 안전한 계정 보호 방법이다.

MFA 장치
- Google Authenticator(phone only)
- Authy(phone only)
Above two is support for multiple tokens on a single device.
- Universal 2nd Factor(U2F) Security Key
물리적인 장치, 반드시 AWS 에서 제공하는 것은 아님
단일 보안키만 사용 가능
하드웨어 보안 토큰

MFA 설정 실습
1. 비밀번호 보안 설정

IAM 대시보드 > Account settings > Password Policy > Edit > Custom

- 비밀번호 최소 길이 지정
- 대문자, 소문자, 숫자, 영숫자가 아닌 문자
- 비밀번호 만료 기능 - n 일 후에 비밀번호 만료
- 비밀번호 만료시 관리자가 재설정하도록 설정
- 사용자가 직접 재설정 하도록 설정
- 비밀번호 재사용 방지
2. 루트 계정에 대한 다단계 인증 설정 MFA
우측 상단 계정 이름 클릭 > 보안 자격 증명 클릭(Security Credentials)


AWS 계정에서 가장 중요한 계정인 루트 사용자를 보호하기 위해 MFA 인증 설정 해 주자
하지만 다중 읹으 장치에 대한 액세스 권한을 잃어버리면 계정에서 락아웃 당하기 때문에
핸드폰 등을 분실할 위험이 있으면 안 하는 것이 좋다.
그리고 MFA 장치를 설정한 후 해제 할 수도 있다.
Assign MFA > Select MFA device > 장치 지정하고 Device name 설정
스마트폰이면 Authenticator app 으로 지정하면 됨


Set up your authenticator app
스마트폰 유형에 맞는 앱을 설치해야 함.

휴대폰에서 앱 실행 후 QR 코드 표시 클릭
show QR Code > 코드 스캔

코드 스캔하면 Account Name 설정 화면으로 이동
폰에서 실시간으로 발급된 MFA code 1 을 AWS 페이지에 입력
MFA code 2 까지 입력 > MFA 추가 > 장치 등록 완료
최대 8개까지 장치 등록 가능
이제 루트 계정으로 로그인 할 때 MFA code 창이 뜸
해당 코드를 입력해야만 로그인 가능하기 때문에 계정 보안 수준이 강화됨
'AWS' 카테고리의 다른 글
[AWS] 실습6일차 - AWS 예산 관리 Billing and Cost Managetment (setting Budget) (9) | 2025.01.22 |
---|---|
[AWS] 실습5일차 - IAM & IAM CLI 문제 / 정리 (21) | 2025.01.21 |
[AWS] 실습4일차 - AWS IAM ROLE, IAM 보안도구 등 (14) | 2025.01.20 |
[AWS] 실습3일차 - AWS Access Key, CLI & SDK (6) | 2025.01.19 |
[AWS] 실습1일차 - IAM: Users & Groups (4) | 2025.01.15 |