
Amazon S3를 위한 보안 툴킷
Amazon S3를 위한 보안 툴킷

🍊 Instacart에서 실전 검증됨
다음 명령을 실행하세요:
pip install s3tk
AWS CLI 또는 AWS Vault를 사용하여 AWS 자격 증명을 설정할 수 있습니다:
pip install awscli
aws configure
각 명령에 필요한 IAM 정책을 참조하세요.
버킷을 다음 항목에 대해 스캔합니다:
s3tk scan
특정 버킷에서만 실행
s3tk scan my-bucket my-bucket-2
와일드카드와도 함께 작동합니다
s3tk scan "my-bucket*"
올바른 로그 버킷과 접두사 확인
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"
CloudTrail 객체 수준 로깅 확인 [실험적]
s3tk scan --object-level-logging
로깅, 버전 관리 또는 기본 암호화를 건너뜁니다
s3tk scan --skip-logging --skip-versioning --skip-default-encryption
실패 시 이메일 알림 받기 (SNS 사용)
s3tk scan --sns-topic arn:aws:sns:...
버킷 정책 나열
s3tk list-policy
특정 버킷에서만 실행
s3tk list-policy my-bucket my-bucket-2
명명된 문 표시
s3tk list-policy --named
참고: 이는 이전 정책을 대체합니다
비공개 업로드만 허용
s3tk set-policy my-bucket --no-object-acl
삭제 정책
s3tk delete-policy my-bucket
특정 버킷에 대한 퍼블릭 액세스 차단
s3tk block-public-access my-bucket my-bucket-2
--dry-run 플래그를 사용하여 테스트
모든 버킷에서 로깅 활성화
s3tk enable-logging --log-bucket my-s3-logs
특정 버킷에서만
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs
로그 접두사 설정 (기본값 {bucket}/)
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"
--dry-run 플래그를 사용하여 테스트
로깅에 관한 몇 가지 참고 사항:
모든 버킷에서 버전 관리를 활성화
s3tk enable-versioning
특정 버킷에서만
s3tk enable-versioning my-bucket my-bucket-2
--dry-run 플래그를 사용하여 테스트
모든 버킷에 기본 암호화 활성화
s3tk enable-default-encryption
특정 버킷에서만
s3tk enable-default-encryption my-bucket my-bucket-2
기존 객체는 암호화하지 않습니다. 이를 위해서는 encrypt 명령을 사용하세요
테스트하려면 --dry-run 플래그를 사용하세요
버킷의 모든 객체에 대한 ACL을 스캔합니다
s3tk scan-object-acl my-bucket
특정 객체만
s3tk scan-object-acl my-bucket --only "*.pdf"
특정 객체 제외
s3tk scan-object-acl my-bucket --except "*.jpg"
버킷 내 모든 객체의 ACL을 재설정합니다
s3tk reset-object-acl my-bucket
이렇게 하면 모든 객체가 비공개로 설정됩니다. 앞으로 이를 강제하는 방법은 버킷 정책을 참조하세요.
테스트하려면 --dry-run 플래그를 사용하세요
특정 객체를 지정하는 방법은 scan-object-acl과 동일합니다
서버 측 암호화를 사용하여 버킷의 모든 객체를 암호화합니다
s3tk encrypt my-bucket
기본적으로 S3 관리형 키를 사용합니다. KMS 관리형 키를 사용하려면 다음을 사용하세요:
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...
고객 제공 키의 경우 다음을 사용하세요:
s3tk encrypt my-bucket --customer-key secret-key
--dry-run 플래그를 사용하여 테스트
scan-object-acl과 동일한 방식으로 특정 객체를 지정
참고: 객체는 모든 사용자 지정 ACL을 잃게 됩니다
버킷 내 객체의 모든 암호화되지 않은 버전 삭제
s3tk delete-unencrypted-versions my-bucket
안전을 위해 현재 버전의 객체는 삭제하지 않습니다
테스트하려면 --dry-run 플래그를 사용하세요
scan-object-acl과 동일한 방식으로 특정 객체를 지정하세요
버킷을 소유하고 있는지 확인하기 위해 Route 53을 스캔합니다
s3tk scan-dns
그렇지 않으면 서브도메인 탈취에 취약할 수 있습니다.
자격 증명은 ~/.aws/credentials에 지정하거나 환경 변수로 지정할 수 있습니다. 환경 변수에 대한 설명은 이 가이드를 참조하세요.
다음과 같이 사용할 프로필을 지정할 수 있습니다:
AWS_PROFILE=your-profile s3tk
다음은 각 명령에 필요한 권한입니다. 필요한 문(statement)만 포함하세요.