AWS RAM 용어 및 개념 - AWS Resource Access Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS RAM 용어 및 개념

다음 개념은 AWS Resource Access Manager(AWS RAM)를 사용하여 리소스를 공유하는 방법을 설명하는 데 도움이 됩니다.

리소스 공유

AWS RAM을 사용하여 리소스를 공유하려면 리소스 공유를 생성해야 합니다. 리소스 공유의 세 가지 요소는 다음과 같습니다.

  • 공유할 하나 이상의 AWS 리소스 목록

  • 리소스 액세스 권한이 부여된 하나 이상의 보안 주체 목록

  • 공유에 포함될 각 리소스 유형에 대한 관리형 권한. 각 관리형 권한은 해당 리소스 공유에 있는 해당 유형의 모든 리소스에 적용됩니다.

AWS RAM을 사용하여 리소스 공유를 생성한 후에는 리소스 공유에 지정된 보안 주체에게 공유 리소스에 대한 액세스 권한을 부여할 수 있습니다.

  • AWS RAM과 AWS Organizations와의 공유가 활성화되어 있고 공유 대상 보안 주체가 공유 계정과 같은 조직에 속해 있는 경우 계정 관리자가 AWS Identity and Access Management(IAM) 권한 정책을 사용하여 리소스 사용 권한을 부여하는 즉시 해당 보안 주체는 액세스 권한을 부여받을 수 있습니다.

  • AWS RAM과 Organizations와의 공유를 활성화하지 않은 경우에도 조직 내 개별 AWS 계정과는 리소스를 공유할 수 있습니다. 소비 계정의 관리자는 리소스 공유에 참여하라는 초대를 받게 되며, 초대를 수락해야 리소스 공유에 지정된 주체가 공유 리소스에 액세스할 수 있습니다.

  • 리소스 유형에서 지원하는 경우 조직 외부 계정과 공유할 수도 있습니다. 소비 계정의 관리자는 리소스 공유에 참여하라는 초대를 받게 되며, 초대를 수락해야 리소스 공유에 지정된 주체가 공유 리소스에 액세스할 수 있습니다. 이 유형의 공유를 지원하는 리소스 유형에 대한 자세한 내용은 공유 가능한 AWS 리소스에서 조직 외부 계정과 공유 가능 열을 참조하세요.

공유 계정

공유 계정은 공유되는 리소스를 포함하고 있으며, AWS RAM 관리자가 AWS RAM을 사용하여 AWS 리소스 공유를 생성할 때 사용됩니다.

AWS RAM 관리자는 AWS 계정에서 리소스 공유를 생성하고 구성할 권한이 있는 IAM 보안 주체입니다. AWS RAM은 리소스 기반 정책을 리소스 공유의 리소스에 연결하는 방식으로 작동하므로 AWS RAM 관리자는 리소스 공유에 포함된 각 리소스 유형에 대해 AWS 서비스의 PutResourcePolicy 작업을 호출할 수 있는 권한도 갖고 있어야 합니다.

소비 보안 주체

소비 계정은 리소스가 공유되는 AWS 계정입니다. 리소스 공유에는 계정 전체를 보안 주체로 지정하거나, 일부 리소스 유형의 경우 계정의 개별 역할 또는 사용자를 주체로 지정할 수 있습니다. 이 유형의 공유를 지원하는 리소스 유형에 대한 자세한 내용은 공유 가능한 AWS 리소스에서 IAM 역할 및 사용자와 공유 가능 열을 참조하세요.

AWS RAM은 또한 리소스 공유의 소비자로 서비스 보안 주체도 지원합니다. 이 유형의 공유를 지원하는 리소스 유형에 대한 자세한 내용은 공유 가능한 AWS 리소스에서 서비스 보안 주체와 공유 가능 열을 참조하세요.

소비 계정의 보안 주체는 다음 권한이 모두 허용하는 작업만 수행할 수 있습니다.

  • 리소스 공유에 연결된 관리형 권한. 이 권한은 소비 계정의 보안 주체에게 부여할 수 있는 최대 권한을 지정합니다.

  • 소비 계정의 IAM 관리자가 개별 역할 또는 사용자에게 연결하는 IAM 자격 증명 기반 정책. 이 정책은 공유 계정 내 리소스의 Amazon 리소스 이름(ARN)및 지정된 작업에 대한 Allow 액세스 권한을 부여해야 합니다.

AWS RAM은 다음과 같은 IAM 보안 주체 유형을 리소스 공유의 소비자로 지원합니다.

  • 다른 AWS 계정 - 리소스 공유를 통해 공유 계정에 포함된 리소스를 소비 계정에서 사용할 수 있습니다.

  • 개별 IAM 역할 또는 다른 계정의 사용자 - 일부 리소스 유형의 경우 개별 IAM 역할 또는 사용자와 직접 공유하는 것을 지원합니다. 이 보안 주체 유형은 해당 ARN으로 지정합니다.

    • IAM 역할arn:aws:iam::123456789012:role/rolename

    • IAM 사용자arn:aws:iam::123456789012:user/username

  • 서비스 보안 주체 - AWS 서비스와 리소스를 공유하여 서비스에 리소스 공유에 대한 액세스 권한을 부여합니다. 서비스 보안 주체 공유를 사용하면 AWS 서비스가 사용자를 대신해 작업을 수행하여 운영 부담을 덜어줍니다.

    서비스 보안 주체와 공유하려면 누구에게나 공유를 허용하도록 선택한 다음 보안 주체 유형 선택에서 드롭다운 목록에서 서비스 보안 주체를 선택합니다. 서비스 보안 주체의 이름은 다음 형식으로 지정합니다.

    • service-id.amazonaws.com

    혼동된 대리인 위험을 줄이기 위해 리소스 정책은 aws:SourceAccount 조건 키에 리소스 소유자의 계정 ID를 표시합니다.

  • 조직 내 계정 - 공유 계정을 AWS Organizations에서 관리하는 경우 리소스 공유에는 조직의 모든 계정과 공유할 조직의 ID를 지정할 수 있습니다. 리소스 공유에는 해당 조직 단위(OU)의 모든 계정과 공유할 OU ID를 지정할 수도 있습니다. 공유 계정은 자체 조직 또는 자체 조직 내의 OU ID와만 공유할 수 있습니다. 조직 내 계정은 조직 또는 OU의 ARN으로 지정합니다.

    • 조직의 모든 계정 - 다음은 AWS Organizations 조직의 ARN 예시입니다.

      arn:aws:organizations::123456789012:organization/o-<orgid>

    • 조직 단위의 모든 계정 - 다음은 OU ID의 ARN 예시입니다.

      arn:aws:organizations::123456789012:organization/o-<orgid>/ou-<rootid>-<ouid>

    중요

    조직 또는 OU와 공유할 때 해당 범위에 리소스 공유를 소유한 계정이 포함되어 있으면 공유 계정의 모든 주체가 자동으로 공유의 리소스에 대한 액세스 권한을 얻게 됩니다. 부여된 액세스 권한은 공유와 연결된 관리형 권한에 의해 정의됩니다. 이는 AWS RAM에서 공유의 각 리소스에 연결한 리소스 기반 정책이 "Principal": "*"을 사용하기 때문입니다. 자세한 내용은 리소스 기반 정책에서 "Principal": "*" 사용 시 유의 사항 섹션을 참조하세요.

    다른 소비 계정의 보안 주체는 공유 리소스에 즉시 액세스할 수 없습니다. 다른 계정의 관리자가 먼저 자격 증명 기반 권한 정책을 해당 보안 주체에 연결해야 합니다. 이러한 정책은 리소스 공유에 있는 개별 리소스의 ARN에 Allow 액세스 권한을 부여해야 합니다. 이러한 정책의 권한은 리소스 공유와 연결된 관리형 권한에 지정된 권한을 초과할 수 없습니다.

리소스 기반 정책

리소스 기반 정책은 IAM 정책 언어를 구현하는 JSON 텍스트 문서입니다. IAM 역할 또는 사용자와 같은 보안 주체에 연결하는 자격 증명 기반 정책과 달리 리소스 기반 정책은 리소스에 연결합니다. AWS RAM은 리소스 공유에 대해 사용자가 제공한 정보를 기반으로 사용자를 대신하여 리소스 기반 정책을 작성합니다. 리소스에 액세스할 수 있는 사용자를 결정하는 Principal 정책 요소를 지정해야 합니다. 자세한 내용은 IAM 사용 설명서에서 자격 증명 기반 정책 및 리소스 기반 정책을 참조하세요.

AWS RAM에서 생성하는 리소스 기반 정책은 다른 모든 IAM 정책 유형과 함께 평가됩니다. 여기에는 리소스에 액세스하려는 보안 주체에 연결된 모든 IAM 자격 증명 기반 정책과 AWS 계정에 적용할 수 있는AWS Organizations의 서비스 제어 정책(SCP)이 포함됩니다. AWS RAM에서 생성하는 리소스 기반 정책은 다른 모든 IAM 정책과 동일한 정책 평가 로직에 참여합니다. 정책 평가에 대한 자세한 내용과 그에 따른 권한을 결정하는 방법은 IAM 사용 설명서에서 정책 평가 로직을 참조하세요.

AWS RAM은 사용하기 쉬운 추상화 리소스 기반 정책을 제공하여 간단하고 안전한 리소스 공유 환경을 제공합니다.

리소스 기반 정책을 지원하는 리소스 유형의 경우 AWS RAM에서 자동으로 리소스 기반 정책을 구성하고 관리합니다. 지정된 리소스에 대해 AWS RAM은 해당 리소스를 포함하는 모든 리소스 공유의 정보를 결합하여 리소스 기반 정책을 구축합니다. 예를 들어, AWS RAM을 사용하여 공유하는 Amazon SageMaker 파이프라인을 두 개의 서로 다른 리소스 공유에 포함시킨다고 가정해 보겠습니다. 하나의 리소스 공유로 전체 조직에 읽기 전용 액세스 권한을 제공하고, 다른 리소스 공유로 단일 계정에 SageMaker 실행 권한만 부여할 수 있습니다. AWS RAM에서는 이러한 두 개의 권한을 여러 명령문이 있는 단일 리소스 정책으로 자동 결합합니다. 그런 다음 결합된 리소스 기반 정책을 파이프라인 리소스에 연결합니다. 이 기본 리소스 정책은 GetResourcePolicy 작업을 호출하여 확인할 수 있습니다. 그런 다음 AWS 서비스는 해당 리소스 기반 정책을 사용하여 공유 리소스에 대해 작업을 수행하려는 모든 보안 주체에 권한을 부여합니다.

리소스 기반 정책을 수동으로 생성하고 PutResourcePolicy를 호출하여 리소스에 연결할 수도 있지만, 다음과 같은 이점이 있으므로 AWS RAM을 사용하는 것이 좋습니다.

  • 공유 소비자를 위한 검색 가능성 - AWS RAM을 사용하여 리소스를 공유할 경우 사용자는 공유 받은 모든 리소스를 리소스 소유 서비스의 콘솔 및 API 작업에서 마치 해당 리소스가 사용자 계정에 직접 있는 것처럼 볼 수 있습니다. 예를 들어 AWS CodeBuild 프로젝트를 다른 계정과 공유하는 경우 소비 계정의 사용자는 CodeBuild 콘솔과 수행된 CodeBuild API 작업의 결과에서 프로젝트를 볼 수 있습니다. 리소스 기반 정책을 직접 연결하여 공유한 리소스는 이런 방식으로 보이지 않습니다. 대신 ARN으로 리소스를 검색하고 명시적으로 참조해야 합니다.

  • 공유 소유자를 위한 관리 효율성 - AWS RAM을 사용하여 리소스를 공유할 경우 공유 계정의 리소스 소유자는 자신의 리소스에 액세스할 수 있는 다른 계정을 중앙에서 확인할 수 있습니다. 리소스 기반 정책을 사용하여 리소스를 공유할 경우 관련 서비스 콘솔 또는 API에서 개별 리소스에 대한 정책을 검토해야만 소비 계정을 확인할 수 있습니다.

  • 효율성 - AWS RAM을 사용하여 리소스를 공유할 경우 여러 리소스를 공유하고 하나의 단위로 관리할 수 있습니다. 리소스 기반 정책만 사용하여 리소스를 공유하려면 공유하는 모든 리소스에 개별 정책을 연결해야 합니다.

  • 단순성 - AWS RAM을 사용할 경우 JSON 기반 IAM 정책 언어를 이해하지 않아도 됩니다. AWS RAM은 즉시 사용 가능한 AWS 관리형 권한을 제공하는데, 이 권한 중에서 선택하여 리소스 공유에 연결할 수 있습니다.

AWS RAM을 사용하면 리소스 기반 정책을 아직 지원하지 않는 일부 리소스 유형을 공유할 수도 있습니다. 이러한 리소스 유형의 경우 AWS RAM에서 실제 권한을 나타내는 리소스 기반 정책을 자동으로 생성합니다. 사용자는 GetResourcePolicy를 호출하여 이 표현을 확인할 수 있습니다. 여기에는 다음과 같은 리소스 유형이 포함됩니다.

  • Amazon Aurora – DB 클러스터

  • Amazon EC2 – 용량 예약 및 전용 호스트

  • AWS License Manager – 라이선스 구성

  • AWS Outposts – 로컬 게이트웨이 라우팅 테이블, outposts, 사이트

  • Amazon Route 53 – 전달 규칙

  • Amazon Virtual Private Cloud - 고객 소유 IPv4 주소, 접두사 목록, 서브넷, 트래픽 미러 대상, 전송 게이트웨이, 전송 게이트웨이 멀티캐스트 도메인

AWS RAM에서 생성한 리소스 기반 정책의 예

EC2 Image Builder 이미지 리소스를 개별 AWS RAM 계정과 공유하는 경우 은 다음 예와 같은 정책을 생성하여 리소스 공유에 포함된 이미지 리소스에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages", ], "Resource": "arn:aws:imagebuilder:us-east-1:123456789012:image/testimage/1.0.0/44" } ] }

EC2 Image Builder 이미지 리소스를 다른 AWS 계정의 IAM 역할 또는 사용자와 공유하는 경우, AWS RAM은 다음 예와 같은 정책을 생성하여 리소스 공유에 포함된 이미지 리소스에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/MySampleRole" }, "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages", ], "Resource": "arn:aws:imagebuilder:us-east-1:123456789012:image/testimage/1.0.0/44" } ] }

EC2 Image Builder 이미지 리소스를 조직의 모든 계정 또는 OU 계정과 공유하는 경우, AWS RAM은 다음 예와 같은 정책을 생성하여 리소스 공유에 포함된 이미지 리소스에 연결합니다.

참고

이 정책은 "Principal": "*"를 사용한 다음 "Condition" 요소를 사용하여 지정된 PrincipalOrgID와 일치하는 ID로 권한을 제한합니다. 자세한 내용은 리소스 기반 정책에서 "Principal": "*" 사용 시 유의 사항 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "imagebuilder:GetImage", "imagebuilder:ListImages", ], "Resource": "arn:aws:imagebuilder:us-east-1:123456789012:image/testimage/1.0.0/44" "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-123456789" } } } ] }

리소스 기반 정책에서 "Principal": "*" 사용 시 유의 사항

리소스 기반 정책에 "Principal": "*"를 포함시키면 이 정책은 해당 리소스를 포함하는 계정의 모든 IAM 주체에 액세스 권한을 부여합니다. 단, Condition 요소가 있는 경우 그에 따른 제한이 적용됩니다. 호출 보안 주체에 적용되는 모든 정책의 명시적 Deny 문은 이 정책에서 부여한 권한보다 우선합니다. 그러나 해당 자격 증명 정책, 권한 경계 정책 또는 세션 정책에 암시적 Deny(명시적 Allow가 없음을 의미함)가 있을 경우 해당 리소스 기반 정책에 따라 작업에 액세스 권한이 부여된 주체에는 Deny가 적용되지 않습니다.

이것이 원하는 동작이 아닌 경우 관련 역할 및 사용자에게 영향을 주는 자격 증명 정책, 권한 경계, 또는 세션 정책에 명시적 Deny 문을 추가하여 이 동작을 제한할 수 있습니다.

관리형 권한

관리형 권한은 리소스 공유에서 지원되는 리소스 유형에 대해 관리자가 어떤 조건에서 어떤 작업을 수행할 수 있는지를 정의합니다. 리소스 공유를 생성할 때는 리소스 공유에 포함된 각 리소스 유형에 사용할 관리형 권한을 지정해야 합니다. 관리형 권한은 AWS RAM을 사용하여 공유되는 리소스에 대해 보안 주체가 수행할 수 있는 actions조건 세트를 나열합니다.

리소스 공유의 리소스 유형당 하나의 관리형 권한만 연결할 수 있습니다. 특정 유형의 일부 리소스는 하나의 관리형 권한을 사용하고 같은 유형의 다른 리소스는 다른 관리형 권한을 사용하는 리소스 공유는 생성할 수 없습니다. 이렇게 하려면 서로 다른 두 개의 리소스 공유를 생성하고 두 공유에 리소스를 분할하여 각 세트서로 다른 관리형 권한을 부여해야 합니다. 관리형 권한에는 두 가지 유형이 있습니다.

AWS 관리형 권한

AWS 관리형 권한은 AWS에서 생성 및 유지 관리하며 일반적인 고객 시나리오에 대한 권한을 부여합니다. AWS RAM은 지원되는 모든 리소스 유형에 대해 하나 이상의 AWS 관리형 권한을 정의합니다. 일부 리소스 유형의 경우 둘 이상의 AWS 관리형 권한을 지원하며, 이때 하나의 관리형 권한이 AWS 기본값으로 지정됩니다. 달리 지정하지 않는 한 기본 AWS 관리형 권한이 연결됩니다.

고객 관리형 권한

고객 관리형 권한은 AWS RAM을 사용하여 공유되는 리소스에 대해 어떤 조건에서 어떤 작업을 수행할 수 있는지 정확하게 지정하여 작성하고 유지 관리하는 관리형 권한입니다. 예를 들어, 대규모로 IP 주소를 관리하는 데 도움이 되도록 Amazon VPC IP 주소 관리자(IPAM) 풀에 대한 읽기 액세스를 제한하려고 합니다. 개발자가 IP 주소를 할당할 수 있는 고객 관리형 권한을 생성할 수 있지만, 다른 개발자 계정이 할당하는 IP 주소 범위를 볼 수는 없습니다. 최소 권한 모범 사례에 따라 공유 리소스에 대한 작업을 수행하는 데 필요한 권한만 부여할 수 있습니다.

리소스 공유에서 리소스 유형에 대한 자체 권한을 정의하고, 글로벌 컨텍스트 키서비스별 키와 같은 조건을 추가하여 보안 주체가 리소스에 액세스할 수 있는 조건을 지정할 수 있습니다. 이러한 권한은 하나 이상의 AWS RAM 공유에서 사용할 수 있습니다. 고객 관리형 권한은 리전별로 적용됩니다.

AWS RAM은 관리형 권한을 입력으로 사용하여 공유 리소스에 대한 리소스 기반 정책을 작성합니다.

관리형 권한 버전

관리형 권한에 대한 변경 사항은 해당 관리형 권한의 새 버전으로 표시됩니다. 새 버전이 모든 새 리소스 공유의 기본값입니다. 각 관리형 권한에는 항상 하나의 버전이 기본 버전으로 지정됩니다. 사용자 또는 AWS이 관리형 권한 버전을 새로 생성하는 경우 기존 리소스 공유 각각에 대해 관리형 권한을 명시적으로 업데이트해야 합니다. 이 단계에서는 리소스 공유에 변경 사항을 적용하기 전에 변경 사항을 평가할 수 있습니다. 모든 새 리소스 공유는 해당 리소스 유형에 대한 관리 권한의 새 버전을 자동으로 사용합니다.

AWS 관리형 권한 버전

AWS 관리형 권한에 대한 모든 변경 사항은 AWS에서 처리합니다. 이러한 변경으로 새로운 기능이 추가되거나 발견된 단점이 제거됩니다. 기본 관리형 권한 버전은 리소스 공유에만 적용할 수 있습니다.

고객 관리형 권한 버전

고객 관리형 권한에 대한 모든 변경 사항은 사용자가 처리합니다. 새 기본 버전을 생성하거나, 이전 버전을 기본 버전으로 설정하거나, 리소스 공유와 더 이상 연결되지 않는 버전을 삭제할 수 있습니다. 각 고객 관리형 권한의 버전은 최대 5개까지 보유할 수 있습니다.

리소스 공유를 생성하거나 업데이트할 때 지정된 관리형 권한의 기본 버전만 연결할 수 있습니다. 자세한 내용은 AWS 관리형 권한을 최신 버전으로 업데이트 섹션을 참조하세요.