[Amazon Web Services] AWS STS(Security Token Service)를 사용해보자 !

    반응형
    SMALL

    AWS STS란?

    IAM 역할을 사용해 AWS에 액세스하는 경우, STS Endpoint에서 세션 토큰을 요청한다. Region STS 엔드포인트의 세션 토큰은 모든 리전에서 유효하다. AWS에서는 Region Endpoint를 사용하도록 권장하고있다. 클로벌 STS Endpoint(https://sts.amazonaws.com)의 세션 토큰은 기본적으로 STS가 활성화된 AWS Region에서만 유효하다. AWS STS를 사용하면 AWS Resource에 대한 액세스를 제어할 수 있다.

    임시 보안 자격 증명은 다음과 같은 차이점을 제외하고는 IAM 사용자가 사용할 수 있는 장기 액세스키와 거의 동일하다.

    • 임시 보안 자격 증명은 그 이름을 임시하듯 단기적이다. 이 자격 증명은 몇 분에서 길게는 몇 시간 까지 지속되도록 구성할 수 있다. 자격 증명이 만료되면 AWS는 그 자격 증명을 인식 못하거나 모든 API 요청을 허용하지 않는다.
    • 임시 보안 자격 증명은 사용자와 함께 저장되지 않지만 동적으로 생성되어 요청시 사용자에게 제공된다. 임시 보안 자격 증명이 만료 되었을 때(심지어 만료 전이라도) 사용자는 새 자격 증명을 요청할 수 있다.

    https://subscription.packtpub.com/book/cloud-and-networking/9781800201538/3/ch03lvl1sec15/introducing-aws-security-token-service-aws-sts

    AWS STS Demo

     

    우선 아래와 같은 권한이 있는 IAM User를 생성하고 AWS CLIHello라는 Profile로 미리 로그인 해준다.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": "arn:aws:iam::123456789012:role/*"
            }
        ]
    }
    
    $ aws configure --profile hello

    그리고 아래와 같은 Policy를 가진 IAM Role(apdev-app-role)을 하나 생성해주고 해당 RoleTrust Relationships를 아래와 같이 수정해준다.

    {
        "Version": "2012-10-17",
        "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Hello"
            },
            "Action": "sts:AssumeRole"
            }
        ]
    }

    다음과 같은 CLI 명령어로 임시 보안 자격 증명을 발급 받을 수 있다.

    $ aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name

    그러면 아래와 같이 임시로 apdev-ap-role에 대한 자격증명이 임시로 발급된것을 알 수 있다.

    그리고 위 발급된 Token을 가지고 ~/.aws/credentials에 해당 값을 넣거나 aws configure을 통해 해당 Key들을 넣어준다.

    아래의 명령어를 통해서 값을 넣어줄 수도 있다.

    $ aws configure set --profile S3Read aws_access_key_id ASIA5ZRQWYYXX7YI2BPA
    $ aws configure set --profile S3Read aws_secret_access_key K94MM+C44vAwXTQRQzLM3Vo0BqWx86+koLc4qdV8
    $ aws configure set --profile S3Read aws_session_token IQoJb3JpZ2luX2VjENP//////////wEaDmJoQoU1q0rimoi+Vgs7pdgAViCRRrxc6x26Tgp28NZFxh13AhppfvLWVrIqi0dnktOFDhZS88AnLQVkpH6Tw==

    또는 ~/.aws/credentials에 직접 넣고 싶다면 아래와 같은 형식으로 작성해주면된다.

     

    그러면 아래와 같이 정상 적으로 STS를 통해서 임시로 Key를 발급 받아 조회가 되는 것을 볼 수 있다.

    STS 발급 전

     

    STS 발급 후

    반응형
    LIST

    댓글