2012-04-02 3 views
7

Amazon EC2에서 IT 인프라를 설정하는 중입니다. X 프로덕션 서버 스테이징 서버 로그 데이터 정렬 및 모니터링 서버 빌드 서버 분명히 우리는 서로 다른 서버간에 대화 할 필요가 있습니다. 새 빌드는 스테이징 서버로 scp'd되어야합니다. 로그 정렬자는 프로덕션 서버에서 로그를 가져와야합니다. 우리는 액세스 키 관리에 어려움을 겪고 있다는 것을 빨리 깨닫고 있습니다. 각 서버에는 자체 키 쌍이 있고 자체 보안 그룹이있을 수 있습니다. 우리는 * .pem 파일을 서버에서 서버로 복사하는 것을 끝내고있다. 빌드 서버에는 ssh를 통해 연결하고 새 빌드를 푸시하기 위해 준비 서버의 액세스 키가 있습니다. 스테이징 서버는 유사하게 프로덕션 인스턴스의 액세스 키를 가지고 있습니다. (꿀꺽 꿀꺽 마셔!) 저는 인터넷에서 광범위한 검색을 수행했지만 실제로이 문제를 관리하는 합리적인 방법에 대해 이야기하는 사람을 찾을 수 없었습니다. 이 문제를 처리하는 우리와 비슷한 설정을 가진 사람들은 어떻게됩니까? 우리는 현재의 일하는 방식이 잘못되었다는 것을 알고 있습니다. 질문은 - 올바른 길은 무엇입니까? 귀하의 도움에 감사드립니다! 감사합니다.EC2에서 인스턴스 간 액세스 관리

[업데이트] 적어도 빌드 서버는 외부 서버 (특히 github)에서 액세스 할 수 있어야하기 때문에 상황이 복잡합니다. 우리는 젠킨스 (Jenkins)를 사용하고 있습니다. 포스트 커밋 훅 (post commit hook)은 공개적으로 액세스 할 수있는 URL이 필요합니다. 이 상황에서 @rook에서 제안한 요새 접근 방식이 실패합니다.

+1

+1 좋은 질문입니다. – rook

답변

5

EC2 인스턴스 컬렉션에 대한 액세스를 처리하는 매우 좋은 방법은 Bastion Host입니다.

EC2에서 사용하는 모든 기계는 바스 티언 호스트를 제외하고는 열려있는 인터넷에 대한 SSH 액세스를 허용하지 않아야합니다. "Bastion Host"라는 새로운 보안 정책을 작성하고 요새에서 다른 모든 EC2 인스턴스로 들어오는 포트 22 만 허용합니다. EC2 컬렉션에 사용 된 모든 키는 요새 호스트에 보관됩니다. 각 사용자는 바스 티언 호스트에 대한 자신의 계정을 가지고 있습니다. 이 사용자는 암호로 보호 된 키 파일을 사용하여 요새에 인증해야합니다. 일단 로그인하면 작업을 수행하는 데 필요한 키에 액세스 할 수 있어야합니다. 누군가가 해고되면 요새로 사용자 계정을 제거합니다. 사용자가 요새에서 키를 복사하면 처음에는 요새에 로그인하지 않으면 로그인 할 수 없기 때문에 중요하지 않습니다.

+0

감사합니다. 내 질문에 대한 업데이 트를 참조하십시오 – anand

+1

@anand - 이것은 여전히 ​​두 가지 방법 중 하나에서 작동합니다 : 1) GitHub 포스트 커밋 훅은 HTTPS를 사용하므로 모든 것을 SSH로 영향을받지 않습니다. 젠킨스 (그러나 계속 읽어보십시오). 2) 더 좋은 점은 Rook의 제안에도 충실해야한다는 점이다. 요새 호스트의 빌드 서버에 리버스 프록시 설정이 필요하다. 이것은 환경에 따라 쉽거나 조금 복잡 할 수 있지만, GitHub 플러그인은이를 위해 준비되어 있습니다. [Jenkins inside a firewall] (https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin)을 참조하십시오. # GithubPlugin-Jenkinsinsideafirewall). –

+0

우수. 나는 현재 젠킨스 서버 자체에 리버스 프록시를 가지고있다 - 그것을 요새로 밀어 넣는 것을 생각하지 않았다. 감사! – anand

0

스테이징 서 v 용과 프로덕션 서 v 용으로 두 세트의 키 쌍을 작성하십시오. 개발자에게 준비 키를 제공하고 프로덕션 키를 비공개로 유지할 수 있습니다.

새 빌드를 S3에두고 상자에서 실행중인 perl 스크립트를 사용하여 S3 버킷에서 최신 코드를 가져 와서 해당 서버에 설치할 수 있습니다. 이렇게하면 매번 빌드 할 때마다 수동으로 scp를 수행하지 않아도됩니다. S3 버킷에 빌드를 빌드하고 덤프하는 일종의 연속 빌드 자동화 도구를 사용하여이 프로세스를 자동화 할 수도 있습니다. 희망이 ..

+0

감사합니다. 우리는 이미 빌드 시스템에서 준비 환경 (S3 또는 기타)으로 푸시 아웃을 자동화하는 프로세스에 있습니다. 여러 가지 이유로 프로덕션 시스템에서 실행중인 폴링 스크립트를 피하고자합니다. 또한 사용자의 접근 방식은 준비 서버 키를 모든 프로덕션 인스턴스로 푸시하는 것을 의미합니다. 우리는 SSH 키가 내장 된 AMI를 만드는 것이 불편할 것입니다. 따라서 키의 여러 복사본이 해결되지 않습니다. – anand