AWS STS의 STS는 Security token service의 약자로 말 그대로 보안 토큰을 제공해주는 서비스이다.
보안 토큰에는 각 서비스에 대한 엑세스 권한이 주어진다.
즉, 사용자는 sts를 사용해서 임시 (15분~36시간) 동안 특정 서비스 (s3, ec2…)에 대한 엑세스 권한을 얻게 되는 것이다.
sts를 하는 방법 중에 하나가 assume role이다.
assume role이란 특정 role을 임시로 빌려서 사용하는 것이다.
그 role이 가지고 있는 권한을 사용가능하다.
assume role을 하는 방법은 간단하다.
cli로
aws sts assume-role 하고 —role-arn 옵션과 —role-session-name을 입력하면 된다.
즉, 이런식으로
$ aws sts assume-role --role-arn arn:aws:iam::111111111111:role/RoleB --role-session-name RoleB
하지만 aws 공식 사이트를 들어가면, 두 가지 필수 옵션외에도 추가적으로 붙일 수 있는 게 있다.
이렇게나 많다.
assume-role
--role-arn <value>
--role-session-name <value>
[--policy-arns <value>]
[--policy <value>]
[--duration-seconds <value>]
[--tags <value>]
[--transitive-tag-keys <value>]
[--external-id <value>]
[--serial-number <value>]
[--token-code <value>]
[--source-identity <value>]
[--provided-contexts <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
여기서 특히 MFA나 sessionToken 정보가 필요한 assume-role인 경우는 token-code 옵션을
사용한다.
token을 요구하면 그만큼 보안성이 높아져 이런 식으로 구현하는 곳도 많은 것 같다.
근데 해당 서비스에 접근하려면 token이나 mfa가 있어야 된다는 것을 어떻게 설정할까?
푸는 법은 알았는 데, 그럼 잠그는 방법은 어떻게 될까??
해당 ROLE을 설정할 때 MFA를 사용하도록 하면 된다.
- 사용자가 MFA로 인증하게 하려면 Bool 조건에서 aws:MultiFactorAuthPresent 키가 True
- MFA 인증 이후 지정된 시간 내에서만 액세스 권한을 부여하고 싶은 경우, 숫자 조건 유형을 사용하여 aws:MultiFactorAuthAge 키의 기간과 값(예: 3600초)을 비교
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"AWS": "ACCOUNT-B-ID"},
"Action": "sts:AssumeRole",
"Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
}
}
assumerole 이외에도 다른 action을 할 때, mfa로 인증하게 할 수 도 있다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupIngress",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress"
],
"Resource": "arn:aws:ec2:region:account-id:security-group/sg-12345678",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
인바운드, 아웃바운드 규칙 수정시 mfa 인증 필요
'인프라' 카테고리의 다른 글
MySQL과 PostgreSQL의 차이점 (0) | 2024.05.23 |
---|---|
SSL 이란? (0) | 2024.05.17 |
KAFKA 더 쉽게 이해하기 (0) | 2024.04.15 |
마이크로 V.S. 모놀리식 서비스 (0) | 2024.03.30 |
쿠버네티스 노드 란? (0) | 2024.03.29 |