본문 바로가기

인프라

AWS STS란?

728x90

 

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 인증 필요 

728x90

'인프라' 카테고리의 다른 글

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