웹사이트 검색

AWS의 PassRole 권한은 무엇이며 사용 방법


이 페이지에서

  1. 여기서 무엇을 보게 될까요?
  2. Passrole 권한이란 무엇입니까?\n
  3. Passrole 권한 데모\n
  4. 역할 만들기\n
  5. IAM 사용자에 대한 IAM 정책 추가\n
  6. 인스턴스에 역할 연결\n
  7. 설정 테스트

IAM 서비스는 클라우드 리소스에 대한 액세스를 제어하기 위한 수단으로 많은 클라우드 서비스 제공업체에서 제공합니다. 이러한 리소스에 액세스할 수 있도록 인증되고 권한이 있는 사람을 결정합니다. AWS IAM 자격 증명은 사용자, 그룹 및 역할로 구성됩니다.

이 가이드에서는 특히 IAM 역할에 중점을 둘 것입니다. 이 IAM 자격 증명은 IAM 정책을 연결할 수 있다는 점에서 IAM 사용자와 같습니다. 이러한 정책은 이 ID에 대한 권한 수준의 범위를 결정합니다. 단일 사용자와 연결되고 장기 자격 증명이 있는 IAM 사용자와 달리 역할은 다른 전략을 따릅니다. 그들은 임시 보안 자격 증명을 가지고 있으며 이를 필요로 하는 다른 사람들이 가정/취득합니다. AWS 리소스에 대한 액세스 권한이 없는 일반 사용자, 애플리케이션 또는 서비스는 이 액세스 권한을 얻기 위한 역할을 맡습니다.

여기서 무엇을 볼 수 있습니까?

이 자습서에서는 'IAM Passrole' 권한을 사용하는 방법을 알아봅니다. 또한 이 개념을 사용하여 EC2 인스턴스를 프라이빗 S3 버킷과 연결하는 방법에 대한 간단한 예를 보여줍니다.

Passrole 권한이란 무엇입니까?

많은 AWS 서비스를 구성하는 동안 사용자/관리자는 해당 서비스에 역할을 전달해야 합니다. 그런 다음 서비스는 해당 역할 내에서 허용되는 작업을 수행하기 위해 해당 역할을 가정합니다. 대부분의 경우 역할은 서비스에서 역할을 맡을 때마다가 아니라 서비스를 설정하는 동안 한 번만 서비스에 전달됩니다.

사용자는 서비스에 역할을 전달할 수 있는 권한이 있어야 합니다. 인증된 사용자만 서비스에 역할을 전달할 수 있으므로 이는 강력한 보안 측면입니다. 또한 관리자는 사용자가 서비스에 전달할 수 있는 역할 유형을 제어할 수 있습니다.

Passrole 권한 데모

실용적인 예를 들어 이 개념을 살펴보겠습니다. 이 데모에는 S3 버킷, EC2 인스턴스 및 AWS CLI 자체인 이 인스턴스에서 실행되는 애플리케이션이 있습니다. EC2 인스턴스에서 실행 중인 애플리케이션이 S3 버킷에 액세스할 수 있도록 역할을 구성하려고 합니다. EC2만이 S3에 액세스할 수 있는 권한을 얻고 사용자의 다른 AWS 서비스는 얻지 않는 방식으로 역할을 생성해야 합니다. 이를 위해 애플리케이션에는 S3에 액세스하기 위한 인증 및 권한 부여를 위한 임시 자격 증명이 있어야 합니다. EC2 인스턴스를 시작하는 동안 IAM 역할을 선택하라는 요청을 받았을 것입니다. 이 역할은 EC2 인스턴스에 이러한 임시 자격 증명을 제공합니다. EC2 인스턴스에서 실행되는 애플리케이션은 이러한 자격 증명을 검색하여 S3 버킷에 액세스합니다.

IAM 사용자는 인스턴스를 시작할 때 아래 세 가지 엔터티를 사용하여 EC2 서비스에 역할을 전달할 수 있습니다.

<올 스타일=텍스트-정렬:왼쪽>

  • 먼저 IAM 역할의 권한 경계 또는 범위를 결정할 역할에 정책을 생성하고 연결해야 합니다.\n
  • 다음으로, 기본적으로 AWS 서비스(우리의 경우 EC2)가 역할을 맡거나 맡고 역할에 나열된 권한을 활용하도록 허용하는 이 역할과 관련된 신뢰 정책입니다.\n
  • 마지막으로 IAM 사용자와 연결된 IAM 권한 정책은 전달 권한이 있는 역할을 전달하도록 허용합니다.\n

    역할 만들기

    이 섹션에서는 'EC2S3Access'라는 역할을 생성하고 여기에 'AmazonS3ReadOnlyAccess' 정책을 연결합니다.

    1단계. 관리자 또는 루트 계정에서 IAM 대시보드로 이동하고 액세스 관리 옵션에서 '역할'을 선택합니다. '역할 만들기' 버튼을 클릭합니다.

    2단계. '신뢰할 수 있는 엔터티 선택' 섹션에 '신뢰할 수 있는 엔터티 유형' 및 '사용 사례' 옵션이 표시됩니다. 전자의 경우 'AWS 서비스' 옵션을 선택하고 후자의 경우 'EC2' 옵션을 선택합니다.

    3단계. 다음 섹션 '권한 추가'에서 'S3ReadOnlyAccess' 정책을 연결하고 '다음'을 클릭합니다.

    4단계. 여기에 역할 이름('EC2S3Access')과 이에 대한 선택적 설명을 입력합니다. 신뢰 정책은 이 역할에 자동으로 연결됩니다.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "sts:AssumeRole"
                ],
                "Principal": {
                    "Service": [
                        "ec2.amazonaws.com"
                    ]
                }
            }
        ]
    } 
    

    5단계. 마지막으로 '역할 만들기' 버튼을 클릭하여 위의 역할을 만듭니다.



    IAM 사용자에 대한 IAM 정책 추가

    지금까지 우리는 역할을 생성하고 여기에 정책을 첨부했으며 신뢰할 수 있는 정책도 얻었습니다. 이제 IAM 사용자 자체에 대한 정책을 만들겠습니다. 이 정책에서는 전체 EC2 액세스 권한과 위의 'EC2S3Access' 역할을 EC2 인스턴스와 연결할 수 있는 권한을 사용자에게 부여합니다.

    1단계. 다시 관리자 또는 루트 계정에서 IAM 대시보드로 이동하여 '정책'을 선택하고 '정책 만들기' 버튼을 클릭합니다.

    2단계. 정책 생성 마법사에서 json 탭을 클릭하고 이 정책에 대한 다음 json 코드를 붙여넣기만 하면 됩니다.

    {
       "Version": "2012-10-17",
       "Statement": [{
      	"Effect":"Allow",
      	"Action":["ec2:*"],
      	"Resource":"*"
    	},
    	{
      	"Effect":"Allow",
      	"Action":"iam:PassRole",
      	"Resource":"arn:aws:iam::account_ID:role/EC2S3Access"
    	}]
    }

    이 코드에서 'account_ID'를 사용자의 계정 번호 또는 ID로 바꾸고 'EC2S3Access'를 역할 이름으로 바꿉니다. '다음: 태그'를 클릭합니다.

    3단계. 사용하려는 선택적 '태그'를 지정하고 '다음: 검토'를 클릭합니다.

    4단계. 여기에 이 정책의 이름(여기서는 'iam_user_policy')을 입력하고 마지막으로 '정책 만들기' 버튼을 클릭하여 이 정책을 만듭니다.

    5단계. 위에서 생성한 정책을 IAM 사용자에게 연결합니다.

    인스턴스에 역할 연결

    역할이 준비되고 IAM 사용자가 필요한 정책과 연결되었으므로 이제 이 역할('EC2S3Access')을 EC2 인스턴스에 연결할 때입니다.

    참고: 역할은 실행 중인 인스턴스와 실행 중인 인스턴스에 연결될 수 있습니다.

    우리의 경우 EC2 인스턴스가 이미 실행 중이므로 EC2 콘솔로 이동하여 대상 인스턴스를 선택합니다. '작업 > 보안 > IAM 역할 수정'을 선택합니다. 새 페이지의 드롭다운 메뉴에서 'EC2S3Access' 옵션을 선택하고 '저장'을 클릭하여 계속합니다.

    설정 테스트

    모든 것이 올바르게 설정되었으면 EC2 인스턴스가 S3 버킷에 액세스할 수 있어야 합니다. 먼저 관리자 계정에서 S3 버킷을 생성합니다. 그런 다음 대상 EC2 인스턴스에 로그인한 다음 'user-iam-policy'를 사용하여 IAM 사용자에 대한 aws cli 애플리케이션을 설치 및 구성합니다. 인스턴스의 터미널에서 아래 S3 나열 명령을 실행합니다.

    $aws s3 ls

    Passrole 권한이 작동하는지 교차 확인하려면 다른 시스템에 구성된 동일한 IAM 사용자로부터 동일한 명령을 실행합니다. 이번에는 제한된 권한으로 인해 접근성 오류가 발생했음을 알게 되실 것입니다.

    'iam_user_policy'로 구성된 EC2 인스턴스에 S3의 접근 권한만 부여하고 IAM 사용자의 다른 AWS 서비스에는 해당 권한을 부여하지 않았기 때문에 위와 같은 오류가 발생했습니다.

    참고: 버킷과 해당 객체는 공개적으로 액세스할 수 없습니다.

    결론

    이 가이드에서는 AWS IAM 사용자에게 최소 권한을 부여하기 위해 PassRole 권한을 사용하는 방법을 배웠습니다. EC2 인스턴스를 S3 버킷에 연결하는 방법을 보여 드렸습니다.