쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

태그로 함수 보안

포커스 모드
태그로 함수 보안 - AWS Lambda

다음 단계에서는 ABAC를 사용하여 함수에 대한 권한을 설정하는 한 가지 방법을 보여줍니다. 이 예제 시나리오에서는 4개의 IAM 권한 정책을 생성합니다. 그런 다음 이러한 정책을 새 IAM 역할에 연결합니다. 마지막으로 IAM 사용자를 만들고 해당 사용자에게 새 역할을 수임할 권한을 부여합니다.

사전 조건

Lambda 실행 역할이 있는지 확인하십시오. IAM 권한을 부여할 떄와 Lambda 함수를 만들 때 이 역할을 사용합니다.

1단계: 새 함수에 태그 필요

Lambda와 함께 ABAC를 사용하는 경우 모든 함수에 태그가 필요한 것이 모범 사례입니다. 이렇게 하면 ABAC 권한 정책이 예상대로 작동할 수 있습니다.

다음과 비슷한 IAM 정책을 생성합니다. 이 정책은 aws:RequestTag/tag-key, aws:ResourceTag/tag-keyaws:TagKeys 조건 키를 사용하여 새 함수와 해당 함수를 생성하는 IAM 보안 주체가 모두 project 태그를 갖도록 요구합니다. ForAllValues 수정자는 project 태그만 허용되게 합니다. ForAllValues 수정자를 포함하지 않는 경우 사용자는 project울(를) 통과하는 한 함수에 다른 태그를 추가할 수 있습니다.

예 - 새 함수에 태그 필요
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:TagResource" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:RequestTag/project": "${aws:PrincipalTag/project}", "aws:ResourceTag/project": "${aws:PrincipalTag/project}" }, "ForAllValues:StringEquals": { "aws:TagKeys": "project" } } } }

2단계: Lambda 함수 및 IAM 보안 주체에 연결된 태그를 기반으로 작업 허용

aws:ResourceTag/tag-key 조건 키를 사용하여 보안 주체의 태그가 함수에 연결된 태그와 일치할 것을 요구하는 두 번째 IAM 정책을 생성합니다.. 다음 예제 정책에서는 project 태그가 있는 보안 주체가 project 태그가 있는 함수를 간접 호출하도록 허용합니다. 함수에 다른 태그가 있으면 작업이 거부됩니다.

예 — 함수와 IAM 보안 주체에 일치하는 태그 필요
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }

3단계: 목록 권한 부여

보안 주체가 Lambda 함수 및 IAM 역할을 나열할 수 있도록 허용하는 정책을 생성합니다. 이렇게 하면 보안 주체가 콘솔에서 그리고 API 작업을 호출할 때 모든 Lambda 함수와 IAM 역할을 볼 수 있습니다.

예 — Lambda 및 IAM 목록 권한 부여
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllResourcesLambdaNoTags", "Effect": "Allow", "Action": [ "lambda:GetAccountSettings", "lambda:ListFunctions", "iam:ListRoles" ], "Resource": "*" } ] }

4단계: IAM 권한 부여

iam:PassRole을 허용하는 정책을 생성합니다. 이 권한은 함수에 실행 역할을 할당할 때 필요합니다. 다음 예제 정책에서는 예제 ARN을 Lambda 실행 역할의 ARN으로 바꿉니다.

참고

ResourceTag 작업을 포함하는 정책에는 iam:PassRole 조건 키를 사용하지 마세요. IAM 역할에서는 태그를 사용하여 누가 해당 역할을 전달할 수 있는지 액세스 권한을 제어할 수 없습니다. 서비스에 역할을 전달할 수 있는 권한 부여에 대한 자세한 내용은 사용자에게 AWS 서비스에 역할을 전달할 권한 부여를 참조하세요.

예 — 실행 역할을 전달할 수 있는 권한 부여
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::111122223333:role/lambda-ex" } ] }

5단계 - IAM 역할 생성

역할을 사용하여 권한을 위임하는 모범 사례입니다. abac-project-role이라고 하는 IAM 역할 생성:

  • 1단계: 신뢰할 수 있는 엔터티 선택(Step 1: Select trusted entity)에서 AWS 계정( account)을 선택한 다음 이 계정(This account)을 선택합니다.

  • 2단계: 권한 추가(Step 2: Add permissions)에서는 이전 단계에서 생성한 네 가지 IAM 정책을 연결합니다.

  • 3단계: 이름, 검토 및 생성(Step 3: Name, review, and create)에서는 태그 추가(Add tag)를 선택합니다. project를 입력합니다. 값(Value)을 입력하지 마십시오.

6단계: IAM 사용자 생성

abac-test-user(이)라고 하는 IAM 사용자를 생성합니다. 권한 설정(Set permissions) 섹션에서 기존 정책 직접 연결(Attach existing policies directly)을 선택한 후 정책 생성(Create policy)을 선택합니다. 다음 정책 정의를 입력합니다. 111122223333AWS 계정 ID로 바꿉니다. 이 정책은 abac-test-user이(가) abac-project-role을(를) 수임할 수 있게 허용합니다.

예 — IAM 사용자가 ABAC 역할을 수임할 수 있게 허용
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/abac-project-role" } }

7단계: 권한 테스트

  1. AWS 콘솔에 abac-test-user(으)로 로그인합니다. 자세한 정보는 IAM 사용자로 로그인을 참조하십시오.

  2. abac-project-role 역할로 전환합니다. 자세한 내용은 역할(콘솔) 전환을 참조하십시오.

  3. Lambda 함수 생성:

    • 권한(Permissions)에서 기본 실행 역할 변경(Change default execution role)을 선택하고 실행 역할(Execution role)을 선택한 후 기존 역할 사용(Use an existing role)을 선택합니다. 4단계: IAM 권한 부여에서 사용한 것과 동일한 실행 역할을 선택합니다.

    • 고급 설정(Advanced settings)에서 태그 사용(Enable tags)를 선택한 다음 새 태그 추가(Add new tag)를 선택합니다. project를 입력합니다. 값(Value)을 입력하지 마십시오.

  4. 함수를 테스트합니다.

  5. 두 번째 Lambda 함수를 생성하고 다른 태그(예: environment)를 추가합니다. 1단계: 새 함수에 태그 필요에서 만든 ABAC 정책은 보안 주체가 project 태그를 사용하여 함수를 만들 수만 있도록 허용하기 때문에 이 작업이 실패합니다.

  6. 태그 없이 세 번째 함수를 만듭니다. 1단계: 새 함수에 태그 필요에서 만든 ABAC 정책은 보안 주체가 태그 없이 함수를 만들 수만 있도록 허용하지 않기 때문에 이 작업이 실패합니다.

이 권한 부여 전략을 사용하면 각 새 사용자에 대해 새 정책을 만들지 않고도 액세스를 제어할 수 있습니다. 새 사용자에게 액세스 권한을 부여하려면 할당된 프로젝트에 해당하는 역할을 수임할 권한을 부여하기만 하면 됩니다.

8단계: 리소스 정리

IAM 역할 삭제
  1. IAM 콘솔에서 역할 페이지를 엽니다.

  2. 5단계에서 생성한 역할을 선택합니다.

  3. Delete(삭제)를 선택합니다.

  4. 삭제를 확인하려면 텍스트 입력 필드에 역할 이름을 입력합니다.

  5. Delete(삭제)를 선택합니다.

IAM 사용자를 삭제하려면 다음을 수행하세요.
  1. IAM 콘솔의 사용자 페이지를 엽니다.

  2. 6단계에서 생성한 IAM 사용자를 선택합니다.

  3. Delete(삭제)를 선택합니다.

  4. 삭제를 확인하려면 텍스트 입력 필드에 사용자 이름을 입력합니다.

  5. Delete user(사용자 삭제)를 선택합니다.

Lambda 함수를 삭제하려면
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 생성한 함수를 선택합니다.

  3. 작업, 삭제를 선택합니다.

  4. 텍스트 입력 필드에 confirm를 입력하고 Delete(삭제)를 선택합니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.