에 대한 권한 정책 예제 AWS Secrets Manager - AWS Secrets Manager

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

에 대한 권한 정책 예제 AWS Secrets Manager

권한 정책은 JSON 구조의 텍스트입니다. JSON 정책 문서 구조를 참조하세요.

리소스 및 자격 증명에 연결하는 권한 정책은 매우 유사합니다. 보안 암호에 액세스하기 위해 정책에 포함되는 몇 가지 요소는 다음과 같습니다.

  • Principal: 액세스 권한을 부여할 사람. IAM 사용 설명서보안 주체 지정을 참조하세요. 자격 증명에 정책을 연결할 때는 정책에 Principal 요소를 포함하지 않습니다.

  • Action: 수행할 수 있는 작업. Secrets Manager 작업 섹션을 참조하세요.

  • Resource: 액세스할 수 있는 보안 암호. Secrets Manager 리소스 섹션을 참조하세요.

    와일드카드 문자(*)는 정책을 연결하는 대상에 따라 다른 의미를 갖습니다.

    • 보안 암호에 연결된 정책에서 *는 정책이 이 보안 암호에 적용됨을 의미합니다.

    • 자격 증명에 연결된 정책에서 *는 정책이 계정의 모든 리소스(보안 암호 포함)에 적용됨을 의미합니다.

보안 암호에 정책을 연결하려면 AWS Secrets Manager 보안 암호에 권한 정책 연결 섹션을 참조하세요.

정책을 자격 증명에 연결하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

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

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

다음 예시에서는 보안 암호에 대한 액세스 권한을 부여할 수 있는 두 가지 방법을 보여줍니다. 첫 번째 예시는 보안 암호에 연결할 수 있는 리소스 기반 정책입니다. 이 예시는 여러 사용자 또는 역할에 단일 보안 암호에 대한 액세스 권한을 부여하려는 경우에 유용합니다. 두 번째 예시는 IAM의 사용자 또는 역할에 연결할 수 있는 자격 증명 기반 정책입니다. 이 예시는 IAM 그룹에 대한 액세스 권한을 부여하려는 경우에 유용합니다. 배치 API 호출에서 보안 암호 그룹을 검색할 권한을 부여하려면 예: 비밀 값 그룹을 일괄적으로 검색할 수 있는 권한 섹션을 참조하세요.

예 하나의 보안 암호 읽기(보안 암호에 연결)

다음 정책을 보안 암호에 연결하여 보안 암호에 대한 액세스 권한을 부여할 수 있습니다. 이 정책을 사용하려면 AWS Secrets Manager 보안 암호에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/EC2RoleToAccessSecrets" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
예 고객 관리형 키를 사용하여 암호화된 보안 암호 읽기(자격 증명에 연결)

고객 관리형 키를 사용하여 보안 암호를 암호화하는 경우 다음 정책을 자격 증명에 연결하여 보안 암호를 읽을 액세스 권한을 부여할 수 있습니다. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "SecretARN" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "KMSKeyARN" } ] }

예: 개별 비밀을 읽고 설명할 수 있는 권한

예 비밀 한 가지 읽기 및 설명 (ID에 첨부)

자격 증명에 다음 정책을 연결하여 보안 암호에 대한 액세스 권한을 부여할 수 있습니다. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 단원을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "SecretARN" } ] }

예: 비밀 값 그룹을 일괄적으로 검색할 수 있는 권한

예 보안 암호 그룹 일괄 읽기(자격 증명에 연결)

자격 증명에 다음 정책을 연결하여 배치 API 직접 호출에서 보안 암호 그룹을 검색할 수 있는 액세스 권한을 부여할 수 있습니다. 이 정책은 배치 호출에 다른 보안 암호가 포함되어 있더라도 secretARN1, secretaRN2secretaRN3으로 지정한 보안 암호만 검색할 수 있도록 호출자를 제한합니다. 호출자가 배치 API 호출에서 다른 보안 암호도 요청하는 경우 Secrets Manager는 이를 반환하지 않습니다. 자세한 내용은 을 참조하십시오 BatchGetSecretValue. . 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:BatchGetSecretValue", "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "SecretARN1", "SecretARN2", "SecretARN3" ] } ] }

예: 와일드카드

와일드카드를 사용하여 정책 요소에 값 집합을 포함할 수 있습니다.

예 경로의 모든 보안 암호 액세스(자격 증명에 연결)

다음 정책은 이름이 “TestEnv/”로 시작하는 모든 비밀을 검색할 수 있는 액세스 권한을 부여합니다. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:Region:AccountId:secret:TestEnv/*" } }
예 모든 보안 암호에 대한 메타데이터 액세스(자격 증명에 연결)

다음 정책은 DescribeSecretList: ListSecrets, ListSecretVersionIds로 시작하는 권한을 부여합니다. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:List*" ], "Resource": "*" } }
예 보안 암호 이름 일치(자격 증명에 연결)

다음 정책은 보안 암호에 대한 모든 Secrets Manager 권한을 해당 이름으로 부여합니다. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

보안 암호 이름을 일치시키려면 리전, 계정 ID, 보안 암호 이름 및 와일드카드(?)를 조합하여 임의의 개별 문자와 일치시켜 보안 암호에 대한 ARN을 생성합니다. Secrets Manager는 보안 암호 이름에 6개의 임의 문자를 ARN의 일부로 추가하므로 이 와일드카드를 사용하여 해당 문자와 일치시킬 수 있습니다. "another_secret_name-*" 구문을 사용하는 경우 Secrets Manager는 6개의 임의 문자와 해당 보안 암호를 일치시킬 뿐 아니라 "another_secret_name-<anything-here>a1b2c3"과도 일치시킵니다.

6개의 임의 문자를 제외한 보안 암호 ARN의 모든 부분을 예측할 수 있기 때문에 와일드카드 문자 '??????' 구문을 사용하면 아직 존재하지 않는 보안 암호에 안전하게 권한을 부여할 수 있습니다. 하지만 보안 암호를 삭제한 후 이름이 동일한 보안 암호를 다시 생성할 경우, 임의의 문자 6자가 변경되더라도 새 보안 암호에 대한 권한이 사용자에게 자동으로 부여됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:*", "Resource": [ "arn:aws:secretsmanager:Region:AccountId:secret:a_specific_secret_name-a1b2c3", "arn:aws:secretsmanager:Region:AccountId:secret:another_secret_name-??????" ] } ] }

예: 보안 암호 생성 권한

사용자에게 보안 암호 생성 권한을 부여하려면 사용자가 속한 IAM 그룹에 권한 정책을 연결하는 것이 좋습니다. IAM 사용자 그룹을 참조하세요.

예 보안 암호 생성(자격 증명에 연결)

다음 정책은 보안 암호를 생성하고 보안 암호 목록을 볼 수 있는 권한을 부여합니다. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }

예: 암호를 암호화하기 위한 특정 AWS KMS 키 거부

중요

고객 관리 키를 거부하려면 키 정책 또는 키 부여를 사용하여 액세스를 제한하는 것이 좋습니다. 자세한 내용은 AWS KMSAWS Key Management Service 개발자 안내서의 인증 및 액세스 제어를 참조하십시오.

예 AWS 관리 키 거부 aws/secretsmanager (ID에 연결)

다음 정책은 비밀 생성 또는 업데이트를 aws/secretsmanager 위한 AWS 관리 키 사용을 거부하는 방법을 보여줍니다. 즉, 고객 관리 키를 사용하여 암호를 암호화해야 합니다. aws/secretsmanager키가 있는 경우 키 ID도 포함해야 합니다. Secrets Manager가 이 문자열을 AWS 관리 키로 aws/secretsmanager 해석하므로 빈 문자열도 포함해야 합니다. 두 번째 명령문은 KMS 키가 포함되지 않은 비밀 생성 요청을 거부합니다. Secrets Manager는 KMS 키를 관리 키로 해석하기 때문입니다. AWS aws/secretsmanager

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireCustomerManagedKeysOnSecrets", "Effect": "Deny", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret" ], "Resource": "*", "Condition": { "ForAnyValue:StringLikeIfExists": { "secretsmanager:KmsKeyId": [ "*alias/aws/secretsmanager", "*<key_ID_of_the_AWS_managed_key>", "" ] } } }, { "Sid": "RequireKmsKeyIdParameterOnCreate", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "secretsmanager:KmsKeyId": "true" } } } ] }

예: 권한 및 VPC

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

다른 AWS 서비스의 시크릿에 대한 액세스 요청도 VPC로부터 오는지 확인하십시오. 그렇지 않으면 이 정책에서 해당 서비스의 액세스가 거부됩니다.

예 VPC 엔드포인트를 통해 요청되도록 요구(보안 암호에 연결)

다음 정책은 요청이 VPC 엔드포인트 vpce-1234a5678b9012c를 통해 이루어질 때만 사용자가 Secrets Manager 작업을 수행할 수 있도록 허용합니다. 이 정책을 사용하려면 AWS 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를 사용하는 경우, 이와 같은 정책을 사용할 수 있습니다. 이 정책을 사용하려면 AWS Secrets Manager 보안 암호에 권한 정책 연결 섹션을 참조하세요.

{ "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" } } } ] }

예: 태그를 사용하여 보안 암호에 대한 액세스 제어

태그를 사용하여 보안 암호에 대한 액세스를 제어할 수 있습니다. 태그를 사용하여 권한을 제어하면 빠르게 성장하는 환경에서 유용하며 정책 관리가 번거로운 상황에 도움이 됩니다. 한 가지 전략은 보안 암호에 태그를 연결한 후 보안 암호에 특정 태그가 있을 때 자격 증명에 권한을 부여하는 것입니다.

예 특정 태그를 사용하여 보안 암호에 대한 액세스 허용(자격 증명에 연결)

다음 정책은 키가 "“이고 값이 ServerName" ServerABC"인 태그가 있는 암호를 허용합니다DescribeSecret. 이 정책을 사용하려면 자격 증명에 권한 정책 연결 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:DescribeSecret", "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/ServerName": "ServerABC" } } } }

예: 보안 암호의 태그와 일치하는 태그를 사용하여 자격 증명에 대한 액세스 제한

한 가지 전략은 보안 암호 및 IAM 자격 증명 모두에 태그를 연결하는 것입니다. 그런 다음 자격 증명 태그가 보안 암호의 태그와 일치할 때 작업을 허용하는 권한 정책을 생성합니다. 전체 자습서는 태그를 기반으로 보안 암호에 대한 액세스 권한 거부를 참조하세요.

태그를 사용하여 권한을 제어하면 빠르게 성장하는 환경에서 유용하며 정책 관리가 번거로운 상황에 도움이 됩니다. 자세한 내용은 AWS용 ABAC란 무엇인가요? 섹션을 참조하세요.

예 보안 암호와 동일한 태그가 있는 역할에 대한 액세스 허용(보안 암호에 연결)

다음 정책은 태그 AccessProject에서 보안 암호와 역할의 값이 동일한 경우에만 계정 123456789012GetSecretValue를 부여합니다. 이 정책을 사용하려면 AWS Secrets Manager 보안 암호에 권한 정책 연결 단원을 참조하세요.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "AWS": "123456789012" }, "Condition": { "StringEquals": { "aws:ResourceTag/AccessProject": "${ aws:PrincipalTag/AccessProject }" } }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } }

예: 서비스 보안 주체

시크릿에 연결된 리소스 정책에 AWS 서비스 주체가 포함된 경우 aws: SourceArn 및 aws: 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" } } } ] }