0

그래서 표준 레일 응용 프로그램을 s2에 액세스해야하는 ec2에서 실행하고 있습니다. 나는 현재 장기 액세스 키를 사용하고 있지만 키를 돌리는 것은 고통이며, 나는 이것을 멀리하고 싶다. 두 가지 대체 옵션이있는 것 같습니다.ec2 역할 s3 액세스 용 임시 키가있는 ec2 역할

하나는 ec2 인스턴스에 s3 버킷에 액세스 할 수있는 적절한 권한이있는 역할로 태그 지정합니다. 설치가 쉽지만 액세스 키가없는 것은 약간의 보안 위협처럼 보입니다. 누군가가 서버에 액세스 할 수 있으면 s3에 대한 액세스를 중지하기가 매우 어려울 수 있습니다. Example

두 가지로 저는 역할에서 임시 액세스 키를 얻기 위해 Ruby SDK 및 STS 클래스를 사용하여 '역할 맡기'를하고 레일 애플리케이션에서 사용합니다. 나는 이것을 설정하는 방법에 대해 꽤 혼란 스럽지만 아마도 그것을 이해할 수있을 것이다. 그러나 누군가가 서버에 액세스하더라도 임시 액세스 키를 사용하면 장기간에 걸쳐 s3 데이터에 액세스하는 것이 상당히 어려워 지므로 매우 안전한 방법 인 것 같습니다. General methodology of this setup.

내가 가장해야 할 질문은 무엇인가? 요즘 업계 표준은 어느 것입니까? STS를 설정 한 경험이 있습니까?

도움과이 문제에 대한 추가 이해에 진심으로 감사드립니다!

답변

0

질문에있는 모든 방법에는 AWS 액세스 키가 필요합니다. 이 키들은 분명하지는 않지만 거기에 있습니다. 인스턴스를 종료하는 것 외에도 EC2 인스턴스 내부에서 액세스 권한을 가진 사용자를 막을 수있는 방법은 많지 않습니다. (다른 옵션이 있지만 법의학을위한 것입니다)

현재 인스턴스에 장기 키를 저장하고 있습니다. 이것은 권장하지 않습니다. 권장되는 "최상의 방법"방법은 IAM 역할을 사용하고 필요한 권한 만 가진 역할을 할당하는 것입니다. AWS SDK는 인스턴스의 메타 데이터에서 자격 증명을 가져옵니다.

STS 사용에 대해 생각하고 있습니다. 그러나 STS를 호출하여 임시 자격 증명을 얻으려면 자격 증명이 필요합니다. STS는 훌륭한 서비스이지만 다른 사용자에게 단기간의 임시 자격 증명을 건네주기 위해 설계되었습니다. 예를 들어 웹 서버가 STS를 통해 자격 증명을 작성하여 S3의 파일에 액세스하거나 보내는 등 제한된 용도로 사용자에게 넘겨주는 경우 STS에 대한 생각의 잘못은 일단 악의적 인 사람이 서버에 액세스하면 STS라고 부르는 키를 훔쳐서 STS를 호출 할 필요가 없어진다는 것입니다.

요약하면 NACL, 보안 그룹, 최소 권한, 최소 설치 소프트웨어 등과 같은 서버 보안에 대한 모범 사례를 따르십시오. 그런 다음 IAM 역할을 사용하고 EC2 인스턴스에 대한 최소 권한을 할당하십시오. 액세스 키가 액세스 할 수없는 위치에 데이터를 항상 백업한다는 가치를 잊지 마십시오.

+0

고마워요, 존. 정말 감사합니다. 나는 ec2 역할 태깅을 할 것이다. STS에 대한 많은 문서가이 일반적인 S3 유스 케이스에 적용 가능하다는 것을 의미한다고 생각합니다. – ambe5960

+0

누출 된 액세스 키로 인해 발생할 수있는 손상을 생각하고 싶습니다. 예를 들어 S3 버킷의 모든 데이터를 삭제합니다. 키가 액세스 할 수없는 버킷 사본이 항상 있어야합니다. 다음 예는 "잘못된"파일을 내 S3 버킷에 업로드하고 S3 PutObject 사용 권한을 허용하지 않습니다. 권한있는 파일 액세스. 모든 것을 암호화하십시오. 단기 및 장기적인 손상을 생각한 다음 탐지, 예방 및 백업 전략을 설치하십시오. –