조직에 함수 액세스 권한 부여
AWS Organizations 조직의 모든 계정에 권한을 부여하려면 put-resource-policy를 사용해 aws:PrincipalOrgID 조건 키로 전체 JSON 정책을 생성하는 것이 좋습니다.
중요
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 사용
간단한 사용 사례의 경우, add-permission을 principal-org-id 옵션과 함께 사용할 수 있습니다. 다음 명령은 조직 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 조직의 모든 사용자에게 함수 호출 권한이 부여됩니다. AWS 계정 또는 역할을 Principal로 지정하면 해당 보안 주체만 함수 간접 호출 권한을 얻게 됩니다. 단, 보안 주체가 o-a1b2c3d4e5f 조직에도 속하는 경우에만 그렇습니다.
자세한 내용은 IAM 사용자 설명서의 aws:PrincipalOrgID 섹션을 참조하세요.