View a markdown version of this page

에서 파라미터화된 관리형 권한 사용 AWS RAM - AWS Resource Access Manager

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

에서 파라미터화된 관리형 권한 사용 AWS RAM

파라미터화된 관리형 권한은 자체 값으로 채우는 정책 조건에 자리 표시자가 있는 관리형 권한입니다. 이러한 자리 표시자는 템플릿 파라미터입니다. 새로운 종류의 관리형 권한은 생성하지 않습니다. 기존 템플릿의 정책 템플릿에 변동성을 추가합니다.

각 고유한 조건 값에 대해 별도의 고객 관리형 권한을 생성하는 대신 파라미터를 사용하여 하나의 고객 관리형 권한을 생성합니다. 리소스 공유와 연결할 때 각 파라미터에 대한 값을 제공합니다.는 값을 정책 템플릿으로 AWS RAM 바꾸고 결과 리소스 기반 정책을 공유 리소스에 연결합니다.

예를 들어 중앙 플랫폼 팀은 AWS Systems Manager 파라미터 스토어 파라미터(리소스 유형 ssm:Parameter)에 대해 하나의 고객 관리형 권한을 생성합니다. 승인된 team 태그가 있는 보안 주체에게만 읽기 액세스 권한을 부여합니다. 플랫폼 팀은 해당 고객 관리형 권한을 조직의 계정과 공유합니다. 그런 다음 각 계정은 하나 이상의 파라미터 스토어 파라미터를 포함할 수 있는 자체 리소스 공유에서 이를 사용합니다. 각 리소스 공유에서 계정은 공유 파라미터 스토어 파라미터를 읽을 수 있는 보안 주체의 team 태그 값을 제공합니다.

템플릿 파라미터 유형

AWS RAM 는 두 가지 파라미터 유형을 지원합니다. 유형은가 값을 렌더링된 정책으로 AWS RAM 대체하는 방법을 결정합니다. AWS RAM API 및에서 AWS CLI유형은 STRING 및 입니다STRING_LIST. AWS RAM 콘솔에 문자열 및 StringList로 표시됩니다.

STRING

정확히 하나의 문자열 값을 허용합니다.

  • 조건 키 또는 조건 값에 STRING 파라미터를 사용할 수 있습니다.

  • STRING 파라미터를 다른 텍스트에 포함할 수 있습니다. 예: "arn:aws:iam::@{accountId}:role/Auditor"

  • 렌더링된 값은 항상 문자열입니다. IAM 조건 연산자는 문자열을 비교하는 유형으로 변환하므로 STRING 파라미터는 숫자, 부울, 날짜, IP 주소 또는 ARN 값을 제공할 수 있습니다.

STRING_LIST

1~100개의 문자열 값을 허용합니다.

  • STRING_LIST 파라미터는 조건 키가 아닌 조건 값에서만 사용할 수 있습니다.

  • 조건 값이 파라미터만 포함하는 단일 문자열인 경우는 사용자가 제공하는 값의 배열을 "@{teams}" AWS RAM 렌더링합니다. 단일 값을 제공하는 경우는 단일 문자열을 AWS RAM 렌더링합니다.

  • 조건 값에와 같이 파라미터 앞이나 뒤에 텍스트가 있는 경우 "arn:aws:iam::@{accountIds}:role/ParameterReader"는 각 값을 해당 텍스트와 AWS RAM 결합합니다.

  • 각 값을 둘 이상의 문자열과 결합하려면 조건 값 배열의 문자열을 나열합니다.는 각 값에 대해 각 배열 항목을 AWS RAM 렌더링하고 중복된 결과를 제거합니다. 결과는 항상 배열입니다.

  • AWS RAM 및 IAM은 쉼표로 문자열을 분할하지 않습니다. 쉼표로 구분된 문자열은 하나의 값으로 비교됩니다.

예시는 STRING_LIST 파라미터 예제 섹션을 참조하세요.

정책 템플릿 구문 규칙

관리형 권한의 정책 템플릿에 파라미터를 추가하면 다음 규칙이 적용됩니다. 요청이 이러한 규칙 중 하나를 위반하면는 InvalidParameterException 또는 InvalidPolicyException 오류와 함께 요청을 AWS RAM 거부합니다.

  • 파라미터 자리 표시자는 구문을 사용합니다@{parameterName}.

  • 파라미터 이름에는 문자(a~z, A~Z), 숫자(0~9), 콜론(:), 하이픈(-) 및 밑줄(_)이 포함될 수 있습니다. 이름은 관리형 권한 버전 내에서 고유해야 하며 비교에서는 대/소문자를 무시합니다.

  • 권한 또는 권한 버전을 생성할 때 각 파라미터를 선언해야 합니다. 각 선언에는 이름, 유형 및 설명이 필요합니다. 설명은 최대 255자일 수 있습니다.

  • 선언된 모든 파라미터는 정책 템플릿에 표시되어야 합니다.

  • 자리 표시자는 대소문자를 포함하여 선언된 이름과 정확히 일치합니다. 선언된 이름과 정확히 일치하지 않는 @{...} 형식의 텍스트는 정책에 리터럴 텍스트로 유지됩니다. 예를 들어를 선언teams하지만를 쓰는 경우 @{Teams} AWS RAM 는 teams가 사용되지 않기 때문에를 텍스트@{Teams}로 처리하고 요청을 거부합니다.

  • 파라미터는 Condition 요소, 조건 키 또는 조건 값으로만 나타날 수 있습니다. Action는 Effect, 또는 기타 요소의 파라미터를 AWS RAM 거부합니다.

  • 조건 키는 최대 하나의 파라미터를 포함할 수 있으며 STRING 파라미터여야 합니다. 조건 값에는와 같이 둘 이상의 파라미터가 포함될 수 있습니다"@{project}-@{stage}". 조건 값이 STRING_LIST 파라미터를 결합하면는 각 조건 값에 대해 최대 100개의 문자열까지 해당 값의 모든 조합을 AWS RAM 렌더링합니다.

  • 각 관리형 권한 버전에 대해 최대 100개의 파라미터를 선언할 수 있습니다.

  • 파라미터에는 기본값이 없습니다. 권한을 리소스 공유와 연결할 때 선언된 모든 파라미터에 대해 비어 있지 않은 값을 제공해야 하며 선언되지 않은 이름을 제공하거나 동일한 이름을 두 번 제공할 수 없습니다.

파라미터화된 관리형 권한 생성

다른 고객 관리형 권한을 생성하는 것과 동일한 방식으로 파라미터화된 관리형 권한을 생성합니다. 차이점은 파라미터를 선언하고 정책 템플릿의 조건에서 @{parameterName} 자리 표시자를 사용한다는 것입니다.

Console
파라미터화된 관리형 권한을 생성하려면
  1. 관리형 권한 라이브러리를 열고 고객 관리형 권한 생성을 선택합니다.

  2. 고객 관리형 권한 세부 정보에서 이름을 입력하고 리소스 유형을 선택합니다.

  3. 정책 템플릿에 정책을 입력합니다. 각 리소스 공유가 고유한 값을 제공할 조건에서 @{parameterName} 자리 표시자를 사용합니다.

  4. 템플릿 파라미터에서 정책에서 파라미터 추가를 선택하여 정책의 각 자리 표시자에 대한 행을 추가하거나 파라미터 추가를 선택하여 한 번에 하나의 행을 추가합니다. 각 파라미터에 대해 파라미터 이름을 입력하고 유형(문자열 또는 StringList)을 선택한 다음 설명을 입력합니다. 파라미터 값을 제공하는 모든 사용자에게 설명이 표시됩니다.

  5. (선택 사항) 태그를 추가합니다.

  6. 고객 관리형 권한 생성을 선택합니다.

AWS CLI
파라미터화된 관리형 권한을 생성하려면
  • --policy-template 및 --permission-template-parameters 파라미터를 사용하여 create-permission 명령을 실행합니다.

    다음 예시에서는 ssm:Parameter 리소스 유형에 대한 고객 관리형 권한을 생성합니다. 이 정책에서 보안 주체는 값이 teams 목록에 있는 team 태그가 보안 주체에 있는 경우에만 파라미터를 읽을 수 있습니다.

    $ aws ram create-permission \ --name ParameterReadByTeam \ --resource-type ssm:Parameter \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}"}}}' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "1", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" } ] } }

파라미터화된 관리형 권한 버전 관리

파라미터화된 관리형 권한은 다른 고객 관리형 권한과 동일한 방식으로 버전이 지정됩니다. 각 버전은 파라미터를 독립적으로 선언하므로 새 버전은 이전 버전과 다른 파라미터 세트를 선언할 수 있습니다.

새 버전을 생성하려면 --policy-template 및 --permission-template-parameters 파라미터를 사용하여 create-permission-version 명령을 실행합니다. 다음 예제에서는 STRING 파라미터가 인 두 번째 조건을 추가합니다environment.

$ aws ram create-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"},{"name":"environment","type":"STRING","description":"Value of the environment principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}","aws:PrincipalTag/environment":"@{environment}"}}}'

새 버전은 생성하는 즉시 기본 버전이 됩니다. 기존 리소스 공유는 사용하는 버전을 유지합니다. 리소스 공유 소유자가 새 버전으로 업데이트할 때 소유자는 새 버전이 선언하는 파라미터 값을 제공해야 합니다. 자세한 내용은 AWS 관리형 권한을 최신 버전으로 업데이트 섹션을 참조하세요.

고객 관리형 권한 버전 및 기본 버전의 작동 방식에 대한 자세한 내용은 섹션을 참조하세요에서 고객 관리형 권한 생성 및 사용 AWS RAM.

렌더링된 정책 템플릿 미리 보기

파라미터화된 관리형 권한을 리소스 공유와 연결하기 전에 특정 파라미터 값에서 렌더링하는 AWS RAM 정책을 미리 볼 수 있습니다.

AWS RAM 콘솔에서 리소스 공유를 생성하거나 업데이트할 때 템플릿 파라미터 값 아래에 값을 입력하고 렌더링된 정책 미리 보기를 선택합니다.

에서 --permission-template-parameters 파라미터를 사용하여 get-permission 명령을 AWS CLI실행합니다. 응답 permission 필드에는 자리 표시자 대신 값이 있는 정책이 포함되어 있습니다.

$ aws ram get-permission \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "permission": "{\"Effect\":\"Allow\",\"Action\":[\"ssm:GetParameter\",\"ssm:GetParameters\"],\"Condition\":{\"StringEquals\":{\"aws:PrincipalTag/team\":[\"payments\",\"analytics\"],\"aws:PrincipalTag/environment\":\"prod\"}}}", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "status": "ATTACHABLE", "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" }, { "name": "environment", "type": "STRING", "description": "Value of the environment principal tag that can read the shared parameters" } ] } }

--permission-template-parameters 파라미터가 없으면 get-permission 명령은 @{parameterName} 자리 표시자와 함께 정책 템플릿을 반환합니다. permissionTemplateParameters 필드에는 선언된 각 파라미터의 이름, 유형 및 설명이 나열됩니다.

파라미터화된 관리형 권한을 리소스 공유와 연결

파라미터화된 관리형 권한을 리소스 공유와 연결할 때는 버전이 정책 템플릿을 선언. AWS RAM 렌더링하는 모든 파라미터에 대한 값을 값과 함께 제공하고 결과 리소스 기반 정책을 해당 유형의 공유 리소스에 연결해야 합니다.

Console
파라미터화된 관리형 권한을 리소스 공유와 연결하려면
  1. 리소스 공유를 생성하거나 업데이트할 때 관리형 권한 연결 페이지에서 리소스 유형에 대한 파라미터화된 관리형 권한을 선택합니다.

  2. 템플릿 파라미터 값에서 각 파라미터의 값을 입력합니다. StringList 파라미터의 경우 각 값 뒤에 Enter 키를 누르거나 값을 줄 바꿈으로 구분하여 붙여넣습니다.

  3. (선택 사항) 렌더링된 정책 미리 보기를 선택하여 AWS RAM 연결할 정책을 확인합니다.

  4. 마법사의 나머지 부분을 완료합니다. 검토 페이지에는 템플릿 파라미터 값 아래에 값이 나열됩니다.

AWS CLI
파라미터화된 관리형 권한을 리소스 공유와 연결하려면
  1. --permission-template-parameters 파라미터로 create-resource-share 또는 associate-resource-share-permission을 실행합니다.

    create-resource-share의 경우 파라미터는 목록입니다. 각 항목에는 permissionArn 및 해당 권한의 permissionTemplateParameters 값이 포함됩니다. 다음 예제에서는 파라미터 스토어 파라미터를 다른 파라미터와 공유하는 리소스 공유를 생성합니다 AWS 계정. team 태그 payments 또는 analytics 및 environment 태그가 있는 보안 주체가 태그를 읽을 prod 수 있습니다.

    $ aws ram create-resource-share \ --name PaymentsConfig \ --resource-arns arn:aws:ssm:us-east-1:123456789012:parameter/payments/endpoint \ --principals 111122223333 \ --permission-arns arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"permissionArn":"arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam","permissionTemplateParameters":[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]}]' { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "name": "PaymentsConfig", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "featureSet": "STANDARD" } }

    create-resource-share는 항상 각 관리형 권한의 기본 버전을 사용합니다. 관리형 권한의 기본 버전만 리소스 공유와 연결할 수 있습니다.

  2. 기존 리소스 공유의 파라미터 값을 변경하거나 권한의 기본 버전으로 이동하려면 --replace 파라미터와 함께 associate-resource-share-permission을 실행합니다. 이 명령의 경우는 파라미터 값을 직접 --permission-template-parameters 가져옵니다.

    $ aws ram associate-resource-share-permission \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments"]},{"name":"environment","values":["prod"]}]' \ --replace { "returnValue": true }

여러 리소스 공유를 한 버전 또는 권한에서 다른 버전으로 이동하려면 replace-permission-associations를 실행합니다. 대상 버전이 파라미터를 선언하는 경우 include --permission-template-parameters. AWS RAM applies 명령이 업데이트하는 모든 리소스 공유에 동일한 값을 적용합니다.

템플릿 파라미터 및 값 보기

관리형 권한이 선언하는 파라미터와 리소스 공유가 제공하는 값을 볼 수 있습니다.

관리형 권한이 선언하는 파라미터 보기

get-permission 명령을 실행합니다. permissionTemplateParameters 필드에는 각 파라미터의 이름, 유형 및 설명이 나열됩니다. 콘솔의 권한 세부 정보 페이지에는 동일한 정보가 표시됩니다.

리소스 공유가 제공하는 값 보기

list-resource-share-permissions 명령을 실행합니다. 연결된 각 파라미터화된 관리형 권한에 대해 permissionTemplateParameters 필드에는 리소스 공유가 제공하는 값이 포함됩니다.

$ aws ram list-resource-share-permissions \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "permissionTemplateParameters": [ { "name": "teams", "values": ["payments"] }, { "name": "environment", "values": ["prod"] } ] } ] }

list-permission-associations 명령은 소유한 리소스 공유의 값도 반환합니다. 공유한 고객 관리형 권한을 AWS 계정 사용하는 다른의 리소스 공유를 나열하면 응답에 해당 값이 포함되지 않습니다.

계정 간에 파라미터화된 관리형 권한 공유

다른 고객 관리형 권한과 AWS 계정 마찬가지로 파라미터화된 관리형 권한을 다른와 공유할 수 있습니다. 수신 계정은 각 파라미터의 이름, 유형 및 설명을 볼 수 있으므로 제공할 값을 알려주는 설명을 작성합니다. 각 수신 계정은 공유 관리형 권한을 자체 리소스 공유와 연결할 때 자체 값을 제공합니다.

고객 관리형 권한 공유에 대한 지침은 섹션을 참조하세요의 계정 간에 고객 관리형 권한 공유 및 사용 AWS RAM.

IAM 정책을 사용한 제어 템플릿 파라미터 값

IAM 정책에서 ram:PermissionTemplateParameter/parameter-name 조건 키를 사용하여 보안 주체가 파라미터에 제공할 수 있는 값을 제어할 수 있습니다. 키는 다중 값이며 명명된 파라미터에 대한 요청의 값을 포함합니다. ram:CreateResourceShare, ram:AssociateResourceSharePermission및 ram:ReplacePermissionAssociations 작업에 대한 권한 리소스에서 사용할 수 있습니다.

다음 예제 정책에서 첫 번째 문은 ParameterReadByTeam 고객 관리형 권한에 대한 작업을 부여합니다. 두 번째 문은에 제공된 값이 payments 또는 이외의 값teams인 경우 이를 거부합니다analytics. 키는 다중 값이기 때문에 정책은 ForAnyValue 집합 연산자를 사용합니다.는 선언된 모든 파라미터에 대한 값을 AWS RAM 요구하므로이 고객 관리형 권한을 사용하는 요청은 항상 키를 포함합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam" }, { "Effect": "Deny", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "Condition": { "ForAnyValue:StringNotEquals": { "ram:PermissionTemplateParameter/teams": [ "payments", "analytics" ] } } } ] }

이러한 문은 권한 리소스만 제어합니다. 보안 주체는 리소스 공유 및 공유하는 리소스와 같은 요청의 다른 리소스에 대한 권한도 필요합니다. 더 많은 예시는 에 대한 IAM 정책 예제 AWS RAM를 참조합니다.

STRING_LIST 파라미터 예제

다음 예제에서는가 STRING_LIST 파라미터를 AWS RAM 렌더링하는 방법을 보여줍니다.

예조건 값의 STRING_LIST 파라미터만

템플릿:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": "@{teams}" } }

값: ["payments", "analytics"]

렌더링된 정책:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": ["payments", "analytics"] } }

단일 값 ["payments"]의 경우 렌더링된 값은 문자열 입니다"payments".

예주변 텍스트가 있는 STRING_LIST 파라미터

AWS RAM 는 각 값을 파라미터 앞뒤의 텍스트와 결합합니다.

템플릿:

"Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::@{accountIds}:role/ParameterReader" } }

값: ["111122223333", "444455556666"]

렌더링된 정책:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/ParameterReader", "arn:aws:iam::444455556666:role/ParameterReader" ] } }
예조건 값 배열의 STRING_LIST 파라미터

AWS RAM 는 각 값에 대해 배열의 각 항목을 렌더링하고 중복된 결과를 제거합니다.

템플릿:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::@{accountIds}:role/Auditor", "arn:aws:iam::@{accountIds}:role/Reader" ] } }

값: ["111122223333", "444455556666"]

렌더링된 정책:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/Auditor", "arn:aws:iam::444455556666:role/Auditor", "arn:aws:iam::111122223333:role/Reader", "arn:aws:iam::444455556666:role/Reader" ] } }