2012-04-02 53 views
7

Chúng tôi đang trong quá trình thiết lập cơ sở hạ tầng CNTT của chúng tôi trên Amazon EC2. Giả sử thiết lập dọc theo các dòng: Máy chủ sản xuất X Máy chủ phân trang Y Ghi lại nhật ký và Máy chủ theo dõi Máy chủ tạo Rõ ràng chúng tôi cần có nhiều máy chủ khác nhau nói chuyện với nhau. Một xây dựng mới cần phải được scp'd trên một máy chủ dàn dựng. Trình thu thập nhật ký cần phải kéo nhật ký từ máy chủ sản xuất. Chúng tôi nhanh chóng nhận ra rằng chúng tôi đang gặp sự cố khi quản lý các khóa truy cập. Mỗi máy chủ có cặp khóa riêng và có thể là nhóm bảo mật của riêng nó. Chúng tôi sẽ kết thúc việc sao chép các tệp * .pem từ máy chủ sang loại máy chủ để tạo sự bảo mật. Máy chủ xây dựng có các khóa truy cập của các máy chủ dàn dựng để kết nối thông qua ssh và đẩy một xây dựng mới. Các máy chủ dàn dựng tương tự có các khóa truy cập của các cá thể sản xuất (gulp!) Tôi đã thực hiện một số tìm kiếm mở rộng trên mạng nhưng không thể tìm thấy bất kỳ ai nói về một cách hợp lý để quản lý vấn đề này. Mọi người có thiết lập tương tự như cách chúng tôi xử lý vấn đề này như thế nào? Chúng tôi biết cách làm việc hiện tại của chúng tôi là sai. Câu hỏi đặt ra là - cách đúng đắn là gì? Đánh giá cao sự giúp đỡ của bạn! Cảm ơnQuản lý quyền truy cập cá thể giữa trên EC2

[Cập nhật] Tình huống của chúng tôi phức tạp bởi thực tế ít nhất máy chủ xây dựng cần truy cập từ máy chủ bên ngoài (cụ thể là github). Chúng tôi đang sử dụng Jenkins và hook đăng bài cần một URL có thể truy cập công cộng. Cách tiếp cận pháo đài được đề xuất bởi @rook không thành công trong tình huống này.

+1

+1 câu hỏi hay. – rook

Trả lời

5

Một phương pháp rất tốt để xử lý quyền truy cập vào bộ sưu tập các cá thể EC2 đang sử dụng Bastion Host.

Tất cả các máy bạn sử dụng trên EC2 sẽ không cho phép truy cập SSH vào Internet mở, ngoại trừ Máy chủ lưu trữ cơ sở. Tạo một chính sách bảo mật mới gọi là "Bastion Host" và chỉ cho phép cổng 22 đến từ bastion đến tất cả các phiên bản EC2 khác. Tất cả các khóa được sử dụng bởi bộ sưu tập EC2 của bạn được đặt trên máy chủ pháo đài. Mỗi người dùng có tài khoản riêng của họ cho máy chủ lưu trữ. Những người dùng này nên xác thực với pháo đài bằng cách sử dụng tệp khóa được bảo vệ bằng mật khẩu. Khi họ đăng nhập, họ sẽ có quyền truy cập vào bất kỳ phím nào họ cần để thực hiện công việc của họ. Khi ai đó bị sa thải, bạn xóa tài khoản người dùng của họ vào pháo đài. Nếu người dùng sao chép các khóa từ pháo đài, nó sẽ không quan trọng bởi vì họ không thể đăng nhập trừ khi họ đăng nhập lần đầu vào pháo đài.

+0

cảm ơn. Vui lòng xem cập nhật cho câu hỏi của tôi – anand

+1

@anand - Thao tác này vẫn hoạt động theo một trong hai cách: 1) GitHub post commit hook sử dụng HTTPS, do đó không bị ảnh hưởng bởi mọi thứ SSH, nếu bạn chỉ cần chọn mở cổng 443 cho Jenkins (nhưng đọc tiếp). 2) Thậm chí tốt hơn sẽ được dính vào đề nghị của Rook cho điều này là tốt, mà đòi hỏi một thiết lập proxy ngược lại cho các máy chủ xây dựng trên máy chủ pháo đài mặc dù; điều này có thể dễ dàng hoặc liên quan một chút tùy thuộc vào môi trường, nhưng plugin GitHub được chuẩn bị cho việc này, xem [Jenkins bên trong tường lửa] (https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin # GithubPlugin-Jenkinsinsideafirewall). –

+0

tuyệt vời. Tôi hiện đang có proxy ngược trên máy chủ Jenkins của tôi - không nghĩ đến việc đẩy nó vào pháo đài. Cảm ơn! – anand

0

Tạo hai bộ khóa bàn phím, một cho máy chủ dàn dựng và một cho máy chủ sản xuất của bạn. Bạn có thể cung cấp cho bạn các nhà phát triển các phím dàn dựng và giữ riêng các khóa sản xuất.

Tôi sẽ đặt các bản dựng mới vào S3 và có một tập lệnh perl chạy trên các hộp để lấy mã mới nhất từ ​​các thùng S3 của bạn và cài đặt chúng vào các máy chủ tương ứng. Bằng cách này, bạn không phải tự scp tất cả các xây dựng vào nó mọi lúc. Bạn cũng có thể tự động hóa quá trình này bằng cách sử dụng một số công cụ tự động hóa xây dựng liên tục có thể xây dựng và kết xuất các gói xây dựng cho bạn S3 tương ứng. Hy vọng điều này sẽ giúp ..

+0

Cảm ơn - chúng tôi đang trong quá trình tự động hóa việc đẩy ra khỏi máy xây dựng đến môi trường dàn dựng (S3 hoặc cách khác). Vì nhiều lý do, chúng tôi muốn tránh một tập lệnh bỏ phiếu chạy trên máy sản xuất. Ngoài ra, cách tiếp cận của bạn sẽ vẫn có nghĩa là đẩy các khóa máy chủ dàn dựng đến mọi cá thể sản xuất. Chúng tôi sẽ không thoải mái khi tạo một AMI với các khóa SSH được nhúng trong đó. Vì vậy, nhiều bản sao của các vấn đề về chìa khóa không được giải quyết – anand

Các vấn đề liên quan