Lambda 함수에 대한 세분화된 액세스를 제공하려면 어떻게 해야 합니까?

7분 분량
0

Amazon 리소스 이름(ARN)으로 식별되는 특정 AWS Lambda 함수에 대한 읽기 및 쓰기 액세스 권한을 부여하려고 합니다. Lambda 함수에 대한 세분화된 액세스를 제공하려면 어떻게 해야 합니까?

간략한 설명

AWS Identity and Access Management(IAM) 정책을 사용하여 Lambda 함수에 대한 다음 권한을 구성할 수 있습니다.

  • Lambda 함수 생성
  • Lambda 함수 삭제
  • Lambda 함수의 구성 세부 정보 보기
  • Lambda 함수 수정
  • Lambda 함수 호출
  • Lambda 함수 모니터링

다음 정책 예제에서는 리소스 수준 권한을 지원하는 Lambda API 작업이 각 문의Resource 요소에 나열되는 특정 Lambda 함수로 제한됩니다. 이러한 요소를 지원하는 API 함수에 대한 Condition 요소에 특정 함수 이름이 사용됩니다.

리소스 수준 권한을 지원하지 않는 API 작업은 Resource 요소에 와일드카드("*")가 필요하며 어떠한 Lambda 서비스별 조건 키도 적용할 수 없습니다. Lambda에서 지원하는 IAM 작업, 리소스 및 조건에 대한 자세한 내용은 Actions, Resources, and Condition Keys for AWS Lambda를 참조하세요.

문의 Resource 요소 값은 ARN을 사용하여 문이 적용되는 리소스를 식별합니다. 예를 들어, ActionInvoke이면 Resource는 함수 ARN입니다. IAM은 Invoke 요청의 FunctionNameQualifier 파라미터로 식별되는 함수의 ARN과 이 ARN을 일치시킵니다. 자세한 내용은 AWS Lambda 함수 버전을 참조하세요.

참고: 여러 버전과 별칭을 사용하는 경우 리소스 요소에 "arn:aws:lambda:region:AccountID:function:function_name:*"를 포함해야 할 수 있습니다.

​해결 방법

Lambda 함수를 생성하는 데 필요한 권한

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

lambda:CreateFunction 권한과 iam:PassRole 권한 모두 AWS 명령줄 인터페이스(AWS CLI)나 SDK를 사용하여 Lambda 함수를 생성하는 데 필요합니다. 정책 예제는 Identity-based IAM policies for AWS Lambda를 참조하십시오. 다음 정책은 API 호출자가 Lambda 함수를 생성하고, IAM 역할을 함수에 대한 Lambda 실행 역할로 전달한 다음, 로컬 시스템에서 코드를 업로드할 수 있도록 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionToCreateFunction",
      "Effect": "Allow",
      "Action": [
        "lambda:CreateFunction"
      ],
      "Resource": [
        "arn:aws:lambda:region:AccountID:function:function_name"
      ]
    },
    {
      "Sid": "PermissionToPassARole",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::AccountID:role/role_name"
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Amazon Simple Storage Service(Amazon S3) 버킷에서 코드를 업로드하는 경우 기존 IAM 정책에 다음과 비슷한 정책을 추가하여 Amazon S3에 대해 필요한 권한을 부여합니다.

...
{
  "Sid": "PermissionToUploadCodeFromS3",
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::S3BucketName/FileName.zip"
}
...

참고: 관련 S3 버킷과 파일 이름을 포함하도록 정책을 업데이트하십시오.

Lambda 콘솔에서 함수가 생성될 때 코드를 제공할 수 없기 때문에 읽기 수준 API 작업과 함수 보기 및 업데이트 권한 등의 API 권한이 필요합니다. 다음과 비슷한 정책을 추가하여 이러한 권한을 부여합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionsToViewFunctionsInConsole",
      "Effect": "Allow",
      "Action": [
        "lambda:ListFunctions",
        "lambda:GetAccountSettings"
      ],
      "Resource": "*"
    },
    {
      "Sid": "PermissionsToCreateAndUpdateFunction",
      "Effect": "Allow",
      "Action": [
        "lambda:CreateFunction",
        "lambda:GetFunction",
        "lambda:UpdateFunctionCode"
      ],
      "Resource": [
        "arn:aws:lambda:region:AccountID:function:function_name"
      ]
    },
    {
      "Sid": "PermissionToListExistingRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "PermissionToPassARole",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::AccountID:role/role_name"
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Lambda 함수 생성 프로세스 중 IAM 역할을 생성하려면 다음과 비슷한 IAM 권한을 추가합니다.

...
{
  "Sid": "PermmissionsToCreateAndUpdateARole",
  "Effect": "Allow",
  "Action": [
    "iam:CreateRole",
    "iam:CreatePolicy",
    "iam:PutRolePolicy",
    "iam:AttachRolePolicy"
  ],
  "Resource": "*"
}
...

Lambda 함수를 삭제하는 데 필요한 권한

AWS CLI 또는 SDK를 사용하여 Lambda 함수를 삭제하려면 다음과 비슷한 권한을 추가합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionToDeleteFunction",
      "Effect": "Allow",
      "Action": [
        "lambda:DeleteFunction"
      ],
      "Resource": [
        "arn:aws:lambda:region:AccountID:function:function_name"
      ]
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Lambda 콘솔을 사용하여 Lambda 함수를 삭제하려면 다음과 비슷한 Lambda 읽기 액세스 권한을 추가합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionsToViewFunctionsInConsole",
      "Effect": "Allow",
      "Action": [
        "lambda:ListFunctions",
        "lambda:GetAccountSettings"
      ],
      "Resource": "*"
    },
    {
      "Sid": "PermissionToDeleteFunction",
      "Effect": "Allow",
      "Action": [
        "lambda:DeleteFunction"
      ],
      "Resource": [
        "arn:aws:lambda:region:AccountID:function:function_name"
      ]
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Lambda 함수의 구성 세부 정보를 보는 데 필요한 권한

사용자에게 Lambda 함수의 구성 세부 정보를 볼 수 있는 권한을 주려면 다음과 비슷한 권한을 추가합니다.

참고: 부여하려는 읽기 액세스 수준에 따라 AWS CLI 또는 SDK를 사용할 때 다음 권한 중 일부 또는 전체를 부여해야 할 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ActionsWhichSupportResourceLevelPermissions",
      "Effect": "Allow",
      "Action": [
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration",
        "lambda:GetPolicy",
        "lambda:GetAlias",
        "lambda:ListVersionsByFunction",
        "lambda:ListAliases"
      ],
      "Resource": [
        "arn:aws:lambda:region:AccountID:function:function_name"
      ]
    },
    {
      "Sid": "ActionsWhichDoNotSupportResourceLevelPermissions",
      "Effect": "Allow",
      "Action": [
        "lambda:ListTags",
        "lambda:GetEventSourceMapping",
        "lambda:ListEventSourceMappings"
      ],
      "Resource": "*"
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Lambda 콘솔을 사용하여 함수의 구성 세부 정보를 보려면 다음과 비슷한 권한을 추가합니다.

...
{
  "Sid": "PermissionsToViewFunctionsInConsole",
  "Effect": "Allow",
  "Action": [
    "lambda:ListFunctions",
    "lambda:GetAccountSettings"
  ],
  "Resource": "*"
}
...

Lambda 콘솔은 태그 지정 Lambda 함수를 사용하므로 Lambda 함수를 태그별로 필터링할 수 있습니다. AWS 태그 지정 서비스를 사용하려면 다음과 비슷한 권한을 추가합니다.

...
{
  "Sid": "PermissionsToFilterFunctionsByTags",
  "Effect": "Allow",
  "Action": [
     "tag:GetResources"
  ],
  "Resource": "*"
}
...

Lambda 콘솔에는 함수의 IAM 역할이 액세스할 수 있는 리소스 및 Lambda 함수와 연결된 IAM 역할에 대한 세부 정보가 표시됩니다. 이러한 세부 정보를 보려면 다음과 비슷한 권한을 추가합니다.

...
{
  "Sid": "PermissionsToViewRolesAndPolicies",
  "Effect": "Allow",
  "Action": [
    "iam:GetPolicy",
    "iam:GetPolicyVersion",
    "iam:GetRolePolicy",
    "iam:ListRoles",
    "iam:ListRolePolicies",
    "iam:ListAttachedRolePolicies"
  ],
  "Resource": "*"
}
...

참고: Lambda 함수와 통합된 서비스 및 요구 사항에 따라 다른 AWS 서비스에 대한 추가 권한을 부여해야 할 수 있습니다. 자세한 내용은 AWS Lambda 권한을 참조하십시오.

Lambda 함수를 수정하는 데 필요한 권한

사용자에게 Lambda 함수를 수정할 수 있는 권한을 제공하려면 다음과 비슷한 권한을 추가합니다.

참고: 부여하려는 쓰기 액세스 수준에 따라 AWS CLI 또는 SDK를 사용할 때 다음 권한 중 일부 또는 전체를 부여해야 할 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ActionsWhichSupportResourceLevelPermissions",
      "Effect": "Allow",
      "Action": [
        "lambda:AddPermission",
        "lambda:RemovePermission",
        "lambda:CreateAlias",
        "lambda:UpdateAlias",
        "lambda:DeleteAlias",
        "lambda:UpdateFunctionCode",
        "lambda:UpdateFunctionConfiguration",
        "lambda:PutFunctionConcurrency",
        "lambda:DeleteFunctionConcurrency",
        "lambda:PublishVersion"
      ],
      "Resource": "arn:aws:lambda:region:AccountID:function:function_name"
    },
    {
      "Sid": "ActionsWhichSupportCondition",
      "Effect": "Allow",
      "Action": [
        "lambda:CreateEventSourceMapping",
        "lambda:UpdateEventSourceMapping",
        "lambda:DeleteEventSourceMapping"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "lambda:FunctionArn": "arn:aws:lambda:region:AccountID:function:function_name"
        }
      }
    },
    {
      "Sid": "ActionsWhichDoNotSupportResourceLevelPermissions",
      "Effect": "Allow",
      "Action": [
        "lambda:UntagResource",
        "lambda:TagResource"
      ],
      "Resource": "*"
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

lambda:AddPermissionlambda:RemovePermission을 사용하여 전달되는 정책에 포함되는 보안 주체로 액세스를 제한할 수 있습니다. 특정 이벤트 소스 매핑으로 lambda:UpdateEventSourceMappinglambda:DeleteEventSourceMapping을 제한할 수도 있습니다. 자세한 내용은 Identity-based IAM policies for AWS Lambda를 참조하세요.

고객 관리형 AWS Key Management Service(AWS KMS) 키를 지정하여 환경 변수를 암호화하려면 다음과 비슷한 IAM 정책 코드 조각을 사용하여 KMS 권한을 추가합니다.

...
{
  "Sid": "PermissionsForCryptoOperations",
  "Effect": "Allow",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:CreateGrant"
  ],
  "Resource": "arn:aws:kms:region:AccountID:key/keyID"
},
{
  "Sid": "PermissionsToListExistingKeys",
  "Effect": "Allow",
  "Action": [
    "kms:ListKeys",
    "kms:ListAliases"
  ],
  "Resource": "*"
}
...

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이

Lambda 콘솔을 사용하여 Lambda 함수의 구성을 수정하려면 다음과 비슷한 권한을 추가합니다.

...
{
  "Sid": "PermissionsToViewFunctionsInConsole",
  "Effect": "Allow",
  "Action": [
    "lambda:ListFunctions",
    "lambda:GetAccountSettings"
  ],
  "Resource": "*"
}
...

Lambda 함수를 호출하는 데 필요한 권한

AWS CLI 또는 SDK를 사용하여 테스트 목적으로 Lambda 함수를 수동으로 호출하려면 다음과 비슷한 권한을 추가합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionToInvoke",
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:region:AccountID:function:function_name"
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Lambda 콘솔을 사용하여 Lambda 함수를 나열하려면 다음과 비슷한 권한을 추가합니다.

...
{
  "Sid": "PermissionsToViewFunctionsConfigInConsole",
  "Effect": "Allow",
  "Action": [
    "lambda:ListFunctions",
    "lambda:GetAccountSettings",
    "lambda:GetFunction"
  ],
  "Resource": "*"
}
...

다른 서비스에서 Lambda 함수를 호출할 수 있게 하려면 use resource-based policies for AWS Lambda를 참조하십시오. 함수 정책을 사용하여 Lambda 함수에 대한 계정 간 액세스를 제공할 수도 있습니다. 다음 정책 예제를 사용하여 다른 AWS 계정의 사용자가 Lambda 함수를 수동으로 호출하도록 할 수 있습니다.

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "PermissionToInvoke",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ExternalAccountID:user/username"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:region:AccountID:function:function_name"
    }
  ]
}

참고: 관련 리전, 계정 ID, 함수 이름, ARN 등을 포함하도록 정책을 업데이트하십시오.

Lambda 함수를 모니터링하는 데 필요한 권한

Lambda 콘솔의 Monitoring 보기에서 Amazon CloudWatch 지표를 보려면 다음과 비슷한 권한을 추가합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionForCloudWatchMetrics",
       "Effect": "Allow",
       "Action": [
          "cloudwatch:GetMetricStatistics",
          "cloudwatch:GetMetricData"
        ],
        "Resource": "*"
     }
  ]
}

특정 CloudWatch 지표와 CloudWatch Logs Insights에 대한 권한을 부여하려면 Amazon CloudWatch 권한 참조 문서CloudWatch Logs 권한 참조를 참조하십시오.


댓글 없음