초보 개발자

[CLI] CLI 이용시 MFA 임시 토큰 사용 강제 본문

카테고리 없음

[CLI] CLI 이용시 MFA 임시 토큰 사용 강제

taehyeki 2024. 1. 13. 15:21

배경


AWS 계정을 만들고, 보안상의 문제를 예방하기 위해 MFA를 사용을 강제하는 것이 베스트 프랙티스이다. 콘솔에 로그인 하는 경우에는 자동적으로 MFA인증을 하도록 설정이 되어있지만,  AWS CLI를 이용할 경우에는 MFA를 인증하지 않아, 보안상으로 문제가 생길 수 있다.

 

 

문제 확인


AWS CLI를 이용할 경우에는 aws configure을 통해, ACCESS KEY를 등록할 필요가 있다. 보안상의 이유로 MFA를 유효화 한 경우라도 별도의 설정을 해주지 않으면 AWS CLI를 바로 사용할 수 있다. 즉 CLI를 사용할 경우에는 MFA유무에 관계없이 ACCESS KEY만 등록이 되어있으면 사용이 가능하다는 뜻이다.

 

이렇게 된다면 아래의 문제점이 발생할 수 있는데.

다른 사람이 내 PC를 사용하는 경우에, AWS CLI명령어를 입력하여 원치 않는 리소스를 생성 및 삭제를 해버릴 수 있다.

 

이를 조금이나마 방지하기 위해 MFA의 임시토큰을 발행받아서(기본 12시간)사용할 수 있다.

 

문제 해결 방법


아래의 명령어를 입력하면 임시 정보가 발행된다.

aws sts get-session-token \
  --serial-number MFA식별자 \
  --token-code Authenticator 번호 \
  --profile mfa

 

임시 액세스 키 아이디,

임시 액세스 시크릿,

임시 세션 토큰,

유효 기간,

이 4가지 정보를 얻을 수 있는데,

 

아래의 경로에 존재하는 파일에 이를 입력할 필요가 있다.

~/.aws/credential

 

 

물론 이를 입력한다고 하는 것 만으로는 해결이 되지않는다.

 

해당 계정의 Policy를 추가해줘야한다.

 

policy는 아래와 같다.

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "BlockMostAccessUnlessSignedInWithMFA",
			"Effect": "Deny",
			"NotAction": [
				"iam:CreateVirtualMFADevice",
				"iam:DeleteVirtualMFADevice",
				"iam:ListVirtualMFADevices",
				"iam:EnableMFADevice",
				"iam:ResyncMFADevice",
				"iam:ListAccountAliases",
				"iam:ListUsers",
				"iam:ListSSHPublicKeys",
				"iam:ListAccessKeys",
				"iam:ListServiceSpecificCredentials",
				"iam:ListMFADevices",
				"iam:GetAccountSummary",
				"sts:GetSessionToken"
			],
			"Resource": "*",
			"Condition": {
				"BoolIfExists": {
					"aws:MultiFactorAuthPresent": "false",
					"aws:ViaAWSService": "false"
				}
			}
		}
	]
}

 

 

이를 추가한 뒤 CLI를 사용할 때 아래의 명령어를 추가하는 것으로 사용이 가능하다.

--profile mfa(위에서 설정한 프로필 명)

 

임시 토큰을 설정한 프로필로 명령어를 사용할 때에는 정상 출력이 되지만,

기본 값으로 실행한 경우에는 작동되지 않는 것을 확인할 수 있었다.

 

 

참고자료


https://repost.aws/ko/knowledge-center/mfa-iam-user-aws-cli