조직에 함수 접근 권한 부여하기

조직에 함수 접근 권한 부여하기

AWS Organizations 조직의 모든 계정에 권한을 부여하려면 aws:PrincipalOrgID 조건 키가 있는 전체 JSON 정책을 만들기 위해 put-resource-policy를 사용할 것을 권장합니다.

출처: AWS Lambda 개발자 안내서

본문

중요

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를 참고하세요.

더 알아보기 (Learn more)