리소스 기반 정책 - AWS Secrets Manager

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

리소스 기반 정책

리소스 기반 정책에서 보안 암호에 액세스할 수 있는 사용자와, 보안 암호에 대해 수행할 수 있는 작업을 지정합니다. 리소스 기반 정책을 사용하여 다음을 수행할 수 있습니다.

  • 여러 사용자 및 역할에 단일 보안 암호에 대한 액세스 권한을 부여합니다.

  • 다른 AWS 계정의 사용자 또는 역할에 대한 액세스 권한을 부여합니다.

리소스 기반 정책을 콘솔의 보안 암호에 연결하면 Secret Secrets Manager는 자동화된 추론 엔진 Zelkova 및 API ValidateResourcePolicy을(를) 사용하여 다양한 IAM 보안 주체에 보안 암호에 대한 액세스 권한을 부여하지 못하도록 방지할 수 있습니다. 또는 CLI나 SDK에서 BlockPublicPolicy 파라미터가 있는 PutResourcePolicy API 를 호출할 수 있습니다.

중요

리소스 정책 검증 및 BlockPublicPolicy 파라미터는 보안 암호에 직접 연결된 리소스 정책을 통해 퍼블릭 액세스 권한이 부여되지 않도록 하여 리소스를 보호하도록 지원합니다. 이러한 기능을 사용하는 것 외에도 다음 정책을 주의 깊게 검토하여 퍼블릭 액세스를 허용하지 않는지 확인하세요.

  • 관련 AWS 보안 주체(예: IAM 역할)에 연결된 자격 증명 기반 정책

  • 관련 AWS 리소스(예: AWS KMS(AWS Key Management Service) 키)에 연결된 리소스 기반 정책

보안 암호에 대한 권한을 검토하려면 보안 암호에 대한 권한이 있는 사용자 확인 섹션을 참조하세요.

보안 암호(콘솔)에 대한 리소스 정책을 보거나 변경하거나 삭제하려면
  1. https://console.aws.amazon.com/secretsmanager/에서 Secrets Manager 콘솔을 엽니다.

  2. 보안 암호 목록에서 보안 암호를 선택합니다.

  3. 보안 암호 세부 정보 페이지의 개요 탭에 있는 리소스 권한 섹션에서 권한 편집을 선택합니다.

  4. 코드 필드에서 다음 중 하나를 수행한 후 저장(Save)을 선택합니다.

    • 리소스 정책을 연결하거나 수정하려면 정책을 입력합니다.

    • 정책을 삭제하려면 코드 필드를 지웁니다.

AWS CLI

예 리소스 정책의 검색

다음 get-resource-policy 예시에서는 보안 암호에 연결된 리소스 기반 정책을 검색합니다.

aws secretsmanager get-resource-policy \ --secret-id MyTestSecret
예 리소스 정책 삭제

다음 delete-resource-policy 예시에서는 보안 암호에 연결된 리소스 기반 정책을 삭제합니다.

aws secretsmanager delete-resource-policy \ --secret-id MyTestSecret
예 리소스 정책 추가

다음 put-resource-policy 예시에서는 보안 암호에 사용 권한 정책을 추가하여 해당 정책이 암호에 대한 광범위한 액세스를 제공하지 않는지 먼저 확인합니다. 파일에서 해당 정책을 읽습니다. 자세한 내용은 AWS CLI 사용자 가이드에서 파일에서 AWS CLI 파라미터 로드하기를 참조하세요.

aws secretsmanager put-resource-policy \ --secret-id MyTestSecret \ --resource-policy file://mypolicy.json \ --block-public-policy

mypolicy.json의 콘텐츠:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/MyRole" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }

AWS SDK

보안 암호에 연결된 정책을 검색하려면 GetResourcePolicy를 사용합니다.

보안 암호에 연결된 정책을 삭제하려면 DeleteResourcePolicy를 사용합니다.

보안 암호에 정책을 연결하려면 PutResourcePolicy를 사용합니다. 이미 정책이 연결되어 있는 경우 이 명령은 해당 정책을 새 정책으로 대체합니다. 정책 문서는 JSON 구조의 텍스트 형식이어야 합니다. JSON 정책 문서 구조를 참조하세요.

자세한 내용은 AWS SDKs 단원을 참조하십시오.

예시

예: 개별 보안 암호 값을 검색할 수 있는 권한

보안 암호 값을 검색할 수 있는 권한을 부여하기 위해 정책을 암호 또는 자격 증명에 연결할 수 있습니다. 사용할 정책 유형을 결정하는 방법에 대한 도움말은 자격 증명 기반 정책 및 리소스 기반 정책을 참조하세요. 정책 연결 방법에 대한 자세한 내용은 리소스 기반 정책보안 인증 기반 정책 섹션을 참조하세요.

이 예시는 여러 사용자 또는 역할에 단일 보안 암호에 대한 액세스 권한을 부여하려는 경우에 유용합니다. 배치 API 호출에서 보안 암호 그룹을 검색할 권한을 부여하려면 예: 보안 암호 값 그룹을 일괄적으로 검색할 수 있는 권한 섹션을 참조하세요.

예 보안 암호 1개 읽기

다음 정책을 보안 암호에 연결하여 보안 암호에 대한 액세스 권한을 부여할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/EC2RoleToAccessSecrets" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }

예: 권한 및 VPC

VPC 내에서 Secrets Manager에 액세스해야 하는 경우 권한 정책에 조건을 포함시켜 Secrets Manager에 대한 요청이 VPC에서 전송되도록 할 수 있습니다. 자세한 내용은 VPC 엔드포인트 조건이 있는 요청 제한AWS Secrets Manager VPC 엔드포인트 사용 섹션을 참조하세요.

다른 AWS 서비스의 보안 암호에 대한 액세스 요청도 VPC에서 전송되는지 확인하세요. 그렇지 않으면 이 정책이 액세스를 거부합니다.

예 VPC 엔드포인트를 통해 요청되도록 요구

다음 정책은 요청이 VPC 엔드포인트 vpce-1234a5678b9012c를 통해 이루어질 때만 사용자가 Secrets Manager 작업을 수행할 수 있도록 허용합니다.

{ "Id": "example-policy-1", "Version": "2012-10-17", "Statement": [ { "Sid": "RestrictGetSecretValueoperation", "Effect": "Deny", "Principal": "*", "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234a5678b9012c" } } } ] }
예 VPC를 통해 요청되도록 요구

다음 정책은 명령이 vpc-12345678에서 이루어진 경우에만 보안 암호를 생성 및 관리하는 명령을 허용합니다. 또한 정책에서는 요청이 vpc-2b2b2b2b에서 이루어진 경우에만 보안 암호와 암호화된 값에 액세스하는 작업을 허용합니다. 애플리케이션이 하나의 VPC에서 실행 중이지만 관리 용도로 두 번째 격리된 VPC를 사용하는 경우, 이와 같은 정책을 사용할 수 있습니다.

{ "Id": "example-policy-2", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdministrativeActionsfromONLYvpc-12345678", "Effect": "Deny", "Principal": "*", "Action": [ "secretsmanager:Create*", "secretsmanager:Put*", "secretsmanager:Update*", "secretsmanager:Delete*", "secretsmanager:Restore*", "secretsmanager:RotateSecret", "secretsmanager:CancelRotate*", "secretsmanager:TagResource", "secretsmanager:UntagResource" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "AllowSecretValueAccessfromONLYvpc-2b2b2b2b", "Effect": "Deny", "Principal": "*", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } } ] }

예: 서비스 보안 주체

보안 암호에 연결된 리소스 정책에 AWS 서비스 보안 주체가 포함된 경우 aws:SourceArnaws:SourceAccount 전역 조건 키를 사용하는 것이 좋습니다. ARN 및 계정 값은 요청이 다른 AWS 서비스에서 Secrets Manager로 오는 경우에만 권한 부여 컨텍스트에 포함됩니다. 이러한 조건 조합은 잠재적 혼동된 대리자 시나리오를 방지합니다.

리소스 ARN에 리소스 정책에서 허용되지 않는 문자가 포함된 경우, 해당 리소스 ARN을 aws:SourceArn 조건 키의 값에 사용할 수 없습니다. 대신 aws:SourceAccount 조건 키를 사용합니다. 자세한 내용은 IAM 요구 사항을 참조하세요.

서비스 보안 주체는 일반적으로 보안 암호에 연결된 정책의 보안 주체로 사용되지 않지만 일부 AWS 서비스에서는 이를 필요로 합니다. 서비스에서 보안 암호에 연결하도록 요구하는 리소스 정책에 대한 자세한 내용은 서비스 설명서를 참조하세요.

예 서비스가 서비스 보안 주체를 사용하여 보안 암호에 액세스하도록 허용
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "service-name.amazonaws.com" ] }, "Action": "secretsmanager:GetSecretValue", "Resource": "*", "Condition": { "ArnLike": { "aws:sourceArn": "arn:aws:service-name::123456789012:*" }, "StringEquals": { "aws:sourceAccount": "123456789012" } } } ] }