조직에 함수 접근 권한 부여하기
조직에 함수 접근 권한 부여하기
AWS Organizations 조직의 모든 계정에 권한을 부여하려면 aws:PrincipalOrgID 조건 키가 있는 전체 JSON 정책을 만들기 위해 put-resource-policy를 사용할 것을 권장합니다.
본문
중요
put-resource-policy를 사용하면 리소스의 기존 리소스 기반 정책이 교체됩니다. 리소스에 이미 add-permission으로 정의된 권한이 있다면 put-resource-policy가 이를 덮어씁니다. 변경하기 전에 get-resource-policy를 사용해 기존 정책을 검색하세요.
전체 JSON 정책 사용하기 (권장)
다음 예시 정책은 조직 o-a1b2c3d4e5f의 모든 AWS 계정에 호출 접근 권한을 부여합니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "org-access",
"Effect": "Allow",
"Principal": "*",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-a1b2c3d4e5f"
}
}
}
]
}
정책을 policy.json이라는 파일에 저장하고 적용합니다:
aws lambda put-resource-policy \
--resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \
--policy file://policy.json
전체 JSON 정책을 사용하면 조직 내 특정 계정에 대한 접근을 거부할 수도 있어요:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "allow-org",
"Effect": "Allow",
"Principal": "*",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-a1b2c3d4e5f"
}
}
},
{
"Sid": "deny-specific-account",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::999888777666:root"
},
"Action": "lambda:InvokeFunction",
"Resource": [
"arn:aws:lambda:us-east-2:123456789012:function:my-function",
"arn:aws:lambda:us-east-2:123456789012:function:my-function:*"
]
}
]
}
add-permission 사용하기
간단한 사용 사례의 경우 principal-org-id 옵션과 함께 add-permission을 사용할 수 있어요. 다음 명령은 조직 o-a1b2c3d4e5f의 모든 사용자에게 호출 접근 권한을 부여합니다:
aws lambda add-permission \
--function-name my-function \
--statement-id org-access \
--action lambda:InvokeFunction \
--principal * \
--principal-org-id o-a1b2c3d4e5f
참고
이 명령에서 Principal은 *입니다. 즉, 조직 o-a1b2c3d4e5f의 모든 사용자가 함수 호출 권한을 받습니다. Principal로 AWS 계정이나 역할을 지정하면, 그 주체가 o-a1b2c3d4e5f 조직의 일부일 때만 그 주체가 함수 호출 권한을 받아요.
자세한 내용은 IAM 사용자 안내서의 aws:PrincipalOrgID를 참고하세요.