Làm thế nào để bạn thêm một bí mật vào kho tiền?

Mật khẩu, khóa API và dữ liệu bí mật thuộc danh mục bí mật. Lưu trữ bí mật theo cách an toàn là một thách thức với việc giới hạn quyền truy cập và lưu trữ an toàn thực sự. Hãy xem Hashicorp Vault và cách bạn có thể sử dụng nó để lưu trữ và truy cập các bí mật

Làm thế nào để bạn lưu trữ bí mật?

Mật khẩu, khóa API, Mã thông báo bảo mật và dữ liệu bí mật thuộc danh mục bí mật.
Đó là dữ liệu không nên nằm xung quanh. Nó không được có sẵn ở dạng văn bản gốc ở những vị trí dễ đoán. Trên thực tế, nó không được lưu trữ dưới dạng bản rõ ở bất kỳ vị trí nào.

Dữ liệu nhạy cảm có thể được mã hóa bằng cách sử dụng hoặc TomEE.
Dữ liệu được mã hóa tốt hơn một bước so với dữ liệu không được mã hóa. Mã hóa áp đặt ở phía bên kia nhu cầu giải mã ở phía người dùng yêu cầu khóa giải mã được phân phối. Bây giờ, bạn để chìa khóa ở đâu?

Như bạn thấy, mã hóa gây ra vấn đề về quả trứng gà. Lưu trữ khóa giải mã giúp ứng dụng có khả năng giải mã dữ liệu. Nó cũng cho phép một vectơ tấn công. Người không được ủy quyền có thể truy cập vào khóa giải mã bằng cách truy cập vào máy. Người đó có thể giải mã dữ liệu có thể giải mã bằng khóa này. Khóa là khóa tĩnh nên khóa bị rò rỉ yêu cầu thay đổi khóa. Dữ liệu cần được mã hóa lại và thông tin đăng nhập cần được thay đổi. Không thể phát hiện rò rỉ như vậy bằng biện pháp trực tuyến vì dữ liệu có thể được giải mã ngoại tuyến sau khi lấy được

Một cách tiếp cận là đặt khóa ở một vị trí khó đoán trước khi ứng dụng khởi động và xóa khóa sau khi nó được đọc vào bộ nhớ. Thời gian có key được rút ngắn. Khung thời gian tấn công bị giảm, nhưng mấu chốt vẫn ở đó. Xóa khóa chỉ hoạt động khi khởi động một ứng dụng. Các vùng chứa và vi dịch vụ trong Đám mây được biết là sẽ được khởi động lại sau khi chúng gặp sự cố. Không thể khởi động lại ứng dụng vì khóa đã biến mất

Chờ đã, có hy vọng

Thực hiện mã hóa đúng đã khó, quản lý bí mật còn khó hơn nếu tự mình thực hiện. Vault giải quyết chính xác những vấn đề này. Nó giúp giải quyết vấn đề quả trứng gà và đi kèm với mã hóa. Vault là một dịch vụ để quản lý bí mật. Nó cung cấp một API cấp quyền truy cập vào các bí mật dựa trên các chính sách. Bất kỳ người dùng API nào cũng cần xác thực và chỉ nhìn thấy những bí mật mà anh ta được ủy quyền. Vault mã hóa dữ liệu bằng AES 256-bit với GCM. Nó có thể lưu trữ dữ liệu trong nhiều phần phụ trợ khác nhau [tệp, Amazon DynamoDB, Consul, v.v.]. Khía cạnh quan trọng khác là Vault không bao giờ lưu trữ khóa ở một vị trí cố định. Bắt đầu/khởi động lại Vault luôn yêu cầu một hoặc nhiều người vận hành hủy niêm phong Vault. Tuy nhiên, hãy bắt đầu với những điều cơ bản trước

Vault không phải là câu trả lời cho mọi lo ngại về bảo mật. Bạn nên kiểm tra tài liệu về Mô hình bảo mật Vault để có ý tưởng về mô hình mối đe dọa

Để bootstrap Vault, bạn cần tải xuống tệp nhị phân từ https. //www. dự án kho tiền. io/tải xuống. html. Vault được viết bằng Go và các tệp nhị phân có sẵn cho nhiều nền tảng khác nhau.
Giải nén tệp đã tải xuống và bạn đã sẵn sàng sử dụng Vault.

Khởi động Máy chủ Vault tiếp theo. Bạn cần một tệp cấu hình để chỉ định một số tùy chọn

kho tiền. conf

backend "inmem" {
}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_disable = 1
}

disable_mlock = true

Cấu hình này phù hợp với hầu hết các nền tảng và để thử các bước đầu tiên với Vault. Không sử dụng nó trong sản xuất

Bắt đầu Vault với

$ vault server -config vault.conf

Vault sẽ bắt đầu như một quy trình tiền cảnh

Xin chúc mừng, bạn đã bắt đầu Vault

Bây giờ là thời điểm thích hợp để mở bảng điều khiển thứ hai để thực hiện các tác vụ quản trị với Vault. Vault hiện đang chạy ở chế độ văn bản gốc vì TLS/SSL bị tắt. Bạn cần đặt biến môi trường

$ vault server -config vault.conf
4 để yêu cầu ứng dụng khách Vault sử dụng văn bản gốc

$ export VAULT_ADDR=//127.0.0.1:8200

Vault được bắt đầu. Nó yêu cầu hai bước bổ sung trước khi bạn thực sự có thể bắt đầu sử dụng Vault. Vault cần được khởi tạo và hủy niêm phong. Khởi tạo là quá trình tạo khóa ban đầu. Unsealing đang cung cấp khóa cho Vault để Vault có thể giải mã dữ liệu đã mã hóa và bắt đầu phục vụ ứng dụng khách

Vault tạo khi khởi tạo hai điều

  1. Khóa chính và tách khóa
  2. Mã thông báo gốc

Vault cho phép chia sẻ khóa bằng thuật toán Shamir Secret Sharing. Dữ liệu thường được mã hóa bằng một khóa. Người có quyền truy cập vào khóa có toàn quyền kiểm soát tất cả dữ liệu với tư cách là một người. Đôi khi bạn không muốn điều đó. Thông thường, bạn muốn phân phối khóa chính cho nhiều người để không một người nào kiểm soát tất cả dữ liệu được mã hóa của bạn. Vault cho phép chỉ định tổng số chia sẻ khóa và số lượng chia sẻ khóa cần thiết để hủy niêm phong Vault trong quá trình khởi tạo. Không thể thay đổi cài đặt đó sau khi Vault được khởi chạy. Khởi tạo Vault từ console sẽ hiển thị full key. Khởi tạo bằng API có thể là điều bạn muốn áp dụng với công cụ DevOps của mình bởi e. g. gửi tin nhắn an toàn đến các nhà khai thác của bạn, những người sẽ nhận được chia sẻ khóa

Khởi tạo Vault với

$ vault init -key-shares=5 -key-threshold=2

Vault sẽ hiển thị khóa chia sẻ và khóa gốc. Xin lưu ý rằng những giá trị này là ngẫu nhiên
và thay đổi sau mỗi lần khởi tạo. Hãy cẩn thận với đầu ra đó vì bạn sẽ chỉ nhìn thấy nó một lần. Không có cách nào để lấy lại chìa khóa và mã thông báo sau đó. Vui lòng đọc kỹ hướng dẫn khi sử dụng Vault với dữ liệu thực nếu không bạn sẽ mất dữ liệu của mình.

Key 1: 99eb89735688ad7a29bb1ff27383bd1005a22a62c97f14357ea4f5f98c1d2c8c01
Key 2: 0c5605b16905794a302603bbeb8f6c8ad5ecf7e877f0e29084f838eba931b86902
Key 3: 7f3d88067c7e355acea4fe756a8b23fc6cd6bc671d7cb0f3d2cc8ae543dc3dc303
Key 4: 3d37062e1704ca2a02073b29c097d5a56e7056e710f515c16b40b9cfe3698bb804
Key 5: 4e5c8b99027f863afc85c6e741939ad3d74a1d687a7947a23d740bc109840e1205
Initial Root Token: 9a63de21-8af7-311a-9a5a-151b6a0d4795

Vault initialized with 5 keys and a key threshold of 2. Please
securely distribute the above keys. When the Vault is re-sealed,
restarted, or stopped, you must provide at least 2 of these keys
to unseal it again.

Vault does not store the master key. Without at least 2 keys,
your Vault will remain permanently sealed.

Sau đó, bạn cần hủy niêm phong Vault. Vault không lưu trữ khóa trên đĩa. Nó được lưu trữ trong bộ nhớ mọi lúc. Sau khi khởi chạy và sau khi [khởi động lại] Vault, bạn bắt buộc phải hủy niêm phong Vault với số lượng chia sẻ khóa bắt buộc để Vault có thể cung cấp bí mật. Trong trường hợp này, đó là hai chia sẻ chính. Ghi chú. Ngoài ra còn có một lệnh niêm phong để khiến Vault ngừng cung cấp bí mật

$ vault unseal 99eb89735688ad7a29bb1ff27383bd1005a22a62c97f14357ea4f5f98c1d2c8c01
Sealed: true
Key Shares: 5
Key Threshold: 2
Unseal Progress: 1

$ vault unseal 7f3d88067c7e355acea4fe756a8b23fc6cd6bc671d7cb0f3d2cc8ae543dc3dc303
Sealed: false
Key Shares: 5
Key Threshold: 2
Unseal Progress: 0

Sau khi mở khóa Vault, bạn có thể bắt đầu lưu trữ dữ liệu bí mật bên trong Vault

Vault yêu cầu quyền truy cập được xác thực để tiếp tục từ đây trở đi. Vault sử dụng mã thông báo làm xác thực chung ở cấp độ vận chuyển của nó

Ghi nhớ đầu ra từ quá trình khởi tạo? . Cách dễ nhất bây giờ là sử dụng mã thông báo gốc. Cách dễ nhất để sử dụng mã thông báo trên bảng điều khiển là lưu trữ nó trong một biến môi trường

$ export VAULT_TOKEN=9a63de21-8af7-311a-9a5a-151b6a0d4795
$ vault write secret/my-application [email protected]

Chương trình phụ trợ bí mật chung cho phép lưu trữ các giá trị tùy ý dưới dạng kho lưu trữ khóa-giá trị. Một ngữ cảnh đơn lẻ có thể lưu trữ một hoặc nhiều bộ giá trị khóa. Các bối cảnh có thể được sắp xếp theo thứ bậc và định dạng dữ liệu được sử dụng là JSON

Vault cung cấp bên cạnh phần phụ trợ bí mật chung, các phần phụ trợ khác cho phép tạo thông tin xác thực cho MySQL, SQL Server, PostgreSQL, Consul, v.v.

xác thực

Vault hoạt động chủ yếu với mã thông báo. Mỗi mã thông báo được gán cho một chính sách có thể hạn chế các hành động và đường dẫn. Chính sách sử dụng đối sánh dựa trên đường dẫn để áp dụng quy tắc. Mã thông báo có thể nhận siêu dữ liệu [khóa-giá trị] và hiển thị tên được chỉ định, điều này làm cho việc quản trị trở nên thân thiện hơn một chút

Bạn có thể tạo mã thông báo theo cách thủ công và gán chúng cho ứng dụng và người dùng. Bên cạnh đó, có một số cơ chế xác thực [LDAP, Tên người dùng/Mật khẩu, Mã thông báo GitHub,…] cho phép người dùng đăng nhập và nhận mã thông báo. Mã thông báo và cơ chế xác thực có thể bị thu hồi và điều đó giúp dễ dàng khóa một người dùng cụ thể

Vault đám mây mùa xuân

Chúng tôi tại Pivotal đã xem xét Vault và coi đây là một công cụ đầy hứa hẹn. Đó là lý do tại sao chúng tôi xây dựng Spring Cloud Vault. Spring Cloud Vault là một phần mở rộng cấu hình tương tự như Spring Cloud Config. Spring Cloud Config nhắm mục tiêu quản lý cấu hình bên ngoài được hỗ trợ bởi dữ liệu được lưu trữ trong các kho lưu trữ khác nhau, chẳng hạn như GitHub, SVN hoặc thậm chí là Vault

Với Spring Cloud Vault, bạn có thể truy cập các bí mật của mình bên trong Vault. Bí mật được chọn khi khởi động ứng dụng của bạn. Spring Cloud Vault sử dụng dữ liệu từ ứng dụng của bạn [tên ứng dụng, ngữ cảnh hoạt động] để xác định đường dẫn ngữ cảnh mà bạn đã lưu trữ bí mật của mình

________số 8

Bắt đầu với Spring Cloud Vault

Trước tiên, bạn cần một dự án Spring Boot. bắt đầu. mùa xuân. io là một điểm khởi đầu tốt. Bất kỳ dự án trống nào là đủ

Bao gồm bộ khởi động Spring Cloud Vault trong dự án của bạn

Thêm đoạn mã sau vào tệp cấu hình bản dựng của bạn. Những dòng này bao gồm một bộ khởi động cho Spring Cloud Vault với tất cả các phụ thuộc bắt buộc

maven


    org.springframework.cloud
    spring-cloud-vault-starter-config
    1.0.0.BUILD-SNAPSHOT



    
        spring-snapshots
        Spring Snapshots
        //repo.spring.io/libs-snapshot
        
            true
        
    

lớp

$ vault server -config vault.conf
0

Đảm bảo bao gồm kho lưu trữ Ảnh chụp nhanh khi sử dụng phụ thuộc

$ vault server -config vault.conf
5

Thiết lập cấu hình

Spring Cloud Vault sử dụng theo mặc định

$ vault server -config vault.conf
6 làm ngữ cảnh mặc định và giá trị của
$ vault server -config vault.conf
7 làm ngữ cảnh ứng dụng. Tất cả cấu hình cần được chỉ định trong cấu hình bootstrap. Đối với ví dụ này, chúng tôi sử dụng
$ vault server -config vault.conf
8 trong
$ vault server -config vault.conf
9

$ vault server -config vault.conf
0

$ export VAULT_ADDR=//127.0.0.1:8200
0 được đặt thành
$ export VAULT_ADDR=//127.0.0.1:8200
1 vì chúng tôi đã khởi động Vault ở chế độ HTTP văn bản thuần túy. Đừng làm điều này cho sản xuất. Bản rõ làm cho toàn bộ câu chuyện bí mật trở nên vô dụng vì tất cả người nghe trên mạng có thể nhìn thấy bí mật của bạn.
$ export VAULT_ADDR=//127.0.0.1:8200
0 mặc định là
$ export VAULT_ADDR=//127.0.0.1:8200
3

Xin lưu ý rằng mã thông báo ở đây được lấy từ mã thông báo gốc. Bạn có thể tạo mã thông báo mới với

$ vault server -config vault.conf
1

Ghi dữ liệu vào Vault

Viết một số dữ liệu vào Vault

$ vault server -config vault.conf
2

Cập nhật ứng dụng khởi động mùa xuân của bạn

Bây giờ, hãy chuyển đến lớp trình khởi chạy ứng dụng của bạn và nâng cao nó để thêm bí mật. Sử dụng tên thuộc tính giống như tên bạn đã sử dụng để ghi vào Vault

$ vault server -config vault.conf
3

Tất cả những thứ khác được xử lý bởi chính Spring Cloud Vault. Bây giờ hãy chạy ứng dụng của bạn

Xin chúc mừng, bạn đã làm được

Quan điểm

Spring Cloud Vault hiện đang tồn tại trong Cloud Incubator. Nó hỗ trợ xác thực Token và AppId. Spring Cloud Vault đi kèm với một bộ khởi động và các phần phụ thuộc để tích hợp cơ sở dữ liệu khác nhau và hỗ trợ RabbitMQ/Consul.
Bạn có thể kiểm tra dự án và tài liệu tại https. //github. com/spring-cloud-incubator/spring-cloud-vault-config.

Chúng tôi đã chuẩn bị một số mẫu để giúp bạn có ấn tượng về cách bạn có thể tích hợp Spring Cloud Vault với ứng dụng của mình. Bạn có thể tìm thấy các mẫu tại https. //github. com/mp911de/spring-cloud-vault-config-samples

Chúng tôi chưa có mốc thời gian khi phát hành Spring Cloud Vault. Bạn được mời tham gia buổi nói chuyện của Spencer Gibb tại SpringOne Platform 2016 về Spring Cloud với Consul và Vault hoặc của tôi để tìm hiểu cách Quản lý bí mật ở quy mô lớn. Chúng tôi quan tâm đến phản hồi của bạn

Cảm ơn Alex Soto đã cho tôi xem Vault. Vault được tạo bởi Hashicorp, những người đã tạo ra Vagrant, Consul và các công cụ tuyệt vời khác

Hầm chứa bí mật hoạt động như thế nào?

Vault hoạt động bằng cách mã hóa từng bí mật để giúp ngăn người dùng trái phép truy cập . Chúng hoạt động chủ yếu như một thùng lưu trữ tích cực cho các bí mật cũng như hệ thống quản lý tài khoản để xử lý nhiều tài khoản đặc quyền trong toàn công ty.

Bí mật trong hầm là gì?

Bí mật là bất kỳ thứ gì bạn muốn kiểm soát chặt chẽ quyền truy cập, chẳng hạn như khóa mã hóa API, mật khẩu và chứng chỉ . Vault cung cấp các dịch vụ mã hóa được kiểm soát bằng các phương thức xác thực và ủy quyền.

Chủ Đề