AWS Identity and Access Management(IAM) ID 기반 정책을 사용하여 AWS Secrets Manager 보안 암호에 대한 액세스를 제어하려고 합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
다음과 같은 ID 기반 정책 또는 AWS CLI 명령에서 필요한 경우 이러한 값을 사용자 값으로 대체하십시오.
- YOUR-REGION을 AWS 리전으로
- YOUR-ACCOUNT-ID를 AWS 계정 ID로
- YOUR-SECRET_NAME을 Secrets Manager 보안 암호의 이름으로
- your-secrets-policy.json을 Secrets Manager JSON 파일로
- YOUR-IAM-USER-NAME을 IAM 사용자 이름으로
- YOUR_IAM_ROLE_NAME을 IAM 역할 이름으로
- YOUR-TAG-VALUE를 태그 값으로
IAM 콘솔 사용
JSON 편집기를 사용하여 IAM 정책을 생성합니다. 다음은 보안 암호에 대한 액세스를 허용하거나 제한하기 위해 생성할 수 있는 IAM 정책의 예입니다.
보안 암호 생성을 위한 액세스 권한 부여:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:CreateSecret"
],
"Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
},
{
"Effect": "Allow",
"Action": [
"secretsmanager:ListSecrets"
],
"Resource": [
"*"
]
}
]
}
기존 보안 암호에 대한 액세스 권한 부여 및 수정:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret",
"secretsmanager:RestoreSecret",
"secretsmanager:PutSecretValue",
"secretsmanager:UpdateSecretVersionStage",
"secretsmanager:DeleteSecret",
"secretsmanager:RotateSecret",
"secretsmanager:CancelRotateSecret",
"secretsmanager:UpdateSecret"
],
"Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
},
{
"Effect": "Allow",
"Action": [
"secretsmanager:ListSecrets"
],
"Resource": [
"*"
]
}
]
AWS Key Management Service(AWS KMS) 관리 키로 암호화된 보안 암호의 경우 보안 암호를 읽을 수 있는 액세스 권한을 부여합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:YOUR-REGION:YOUR-ACCOUNT-ID:key/key_id"
}
]
}
태그를 사용하여 보안 암호에 대한 액세스를 제어합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:DescribeSecret",
"Resource": "*",
"Condition": {
"StringEquals": {
"secretsmanager:ResourceTag/tag-key": "YOUR-TAG-VALUE"
}
}
}
]
}
GetSecretValue 및 DescribeSecret 작업을 명시적으로 거부합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": "arn:aws:secretsmanager:YOUR-REGION:YOUR-ACCOUNT-ID:secret:YOUR-SECRET-NAME*"
}
]
}
위의 정책 중 하나를 관리형 정책 또는 인라인 정책으로 연결합니다.
AWS CLI 사용
위의 IAM 정책 중 하나를 your-secrets-policy.json으로 저장합니다.
create-policy 명령을 실행하여 정책을 생성합니다.
aws iam create-policy —policy-name CreateSecret —policy document fileb://create_secret.json
attach-user-policy 명령을 실행하여 정책을 IAM 사용자에게 연결합니다.
aws iam attach-user-policy —policy-arn arn:aws:iam::YOUR-ACCOUNT-ID:policy/CreateSecret —user-name YOUR-IAM-USER-NAME
-또는-
attach-role-policy 명령을 실행하여 정책을 IAM 역할에 연결합니다.
aws iam attach-role-policy —policy-arn arn:aws:iam::YOUR-ACCOUNT-ID:policy/CreateSecret —role-name YOUR-IAM-ROLE-NAME
관련 정보
AWS Secrets Manager 보안 암호에 리소스 기반 정책을 적용하려면 어떻게 해야 합니까?