GetContextKeysForCustomPolicy 사용하기
GetContextKeysForCustomPolicy 사용하기 (CLI)
GetContextKeysForCustomPolicy(컨텍스트 키 조회(사용자 지정 정책)) API를 활용하는 방법을 코드 예시로 정리했어요. 각 예시는 어떤 동작을 하는지, 어떤 파라미터를 쓰는지 순서대로 살펴볼 수 있어요.
출처: 문서
본문
다음 코드 예시들은 GetContextKeysForCustomPolicy 를 어떻게 사용하는지 보여줘요.
AWS CLI
예시 1: 명령줄 파라미터로 제공한 하나 이상의 사용자 지정 JSON 정책이 참조하는 컨텍스트 키 나열하기
aws iam get-context-keys-for-custom-policy \
--policy-input-list '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}","Condition":{"DateGreaterThan":{"aws:CurrentTime":"2015-08-16T12:00:00Z"}}}}'
다음 get-context-keys-for-custom-policy 명령은 제공된 각 정책을 구문 분석해 그 정책들이 사용하는 컨텍스트 키를 나열해요. 이 명령으로 정책 시뮬레이터 명령인 simulate-custom-policy와 simulate-principal-policy를 성공적으로 사용하려면 어떤 컨텍스트 키 값을 제공해야 하는지 확인할 수 있어요. IAM 사용자나 역할에 연결된 모든 정책이 사용하는 컨텍스트 키 목록도 get-context-keys-for-principal-policy 명령으로 조회할 수 있어요. file://로 시작하는 파라미터 값은 파일 이름 자체가 아니라 파일의 내용을 파라미터 값으로 읽어 사용하라는 의미예요.
{
"ContextKeyNames": [
"aws:username",
"aws:CurrentTime"
]
}
출력:
예시 2: 파일 입력으로 제공한 하나 이상의 사용자 지정 JSON 정책이 참조하는 컨텍스트 키 나열하기
[
"Policy1",
"Policy2"
]
다음 get-context-keys-for-custom-policy 명령은 앞선 예시와 동일하되, 정책을 파라미터 대신 파일로 제공해요. 이 명령은 JSON 구조 목록이 아니라 JSON 문자열 목록을 기대하므로 파일은 다음과 같이 구성해야 하며, 한 줄로 합쳐도 돼요.
[ "{\"Version\": \"2012-10-17\", \"Statement\": {\"Effect\": \"Allow\", \"Action\": \"dynamodb:*\", \"Resource\": \"arn:aws:dynamodb:us-west-2:128716708097:table/${aws:username}\", \"Condition\": {\"DateGreaterThan\": {\"aws:CurrentTime\": \"2015-08-16T12:00:00Z\"}}}}" ]
예를 들어, 앞선 예시의 정책을 담은 파일은 다음과 같이 생겨야 해요. 정책 문자열 안의 각 이중 따옴표는 백슬래시를 앞에 붙여 이스케이프해야 해요.
aws iam get-context-keys-for-custom-policy \
--policy-input-list file://policyfile.json
이 파일은 그다음 아래 명령에 전달하면 돼요.
{
"ContextKeyNames": [
"aws:username",
"aws:CurrentTime"
]
}
출력:
PowerShell Tools (V4)
예시 1: 제공된 policy json에 있는 모든 컨텍스트 키를 가져와요. 여러 정책을 제공하려면 값을 쉼표로 구분한 리스트로 전달하면 돼요.
$policy1 = '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/","Condition":{"DateGreaterThan":{"aws:CurrentTime":"2015-08-16T12:00:00Z"}}}}'
$policy2 = '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/"}}'
Get-IAMContextKeysForCustomPolicy -PolicyInputList $policy1,$policy2
PowerShell Tools (V5)
예시 1: 제공된 policy json에 있는 모든 컨텍스트 키를 가져와요. 여러 정책을 제공하려면 값을 쉼표로 구분한 리스트로 전달하면 돼요.
$policy1 = '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/","Condition":{"DateGreaterThan":{"aws:CurrentTime":"2015-08-16T12:00:00Z"}}}}'
$policy2 = '{"Version":"2012-10-17","Statement":{"Effect":"Allow","Action":"dynamodb:*","Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/"}}'
Get-IAMContextKeysForCustomPolicy -PolicyInputList $policy1,$policy2