Закрытый ключ RSA в файле секретов в централизованных конфигурациях - PullRequest
0 голосов
/ 06 апреля 2020

Я создаю приложение, в которое помещаю закрытый ключ RSA в application.yml для чтения в виде строки. Я хочу поместить его в секретный файл и прочитать его из секретного файла, в котором доступны все мои централизованные конфигурации. Мое требование: я хочу прочитать его из секретного файла в виде строки, а не из .pem файла

В application.yml, как правило, я использую центральную конфигурацию.

logging:
  level:
    org:
      springframework: ${LOG_LEVEL:INFO}

Поэтому мы поместили LOG_LEVEL=INFO в централизованный конфиг, который используется docker и EKS для развертывания приложения. Точно так же у нас есть файл секретов для хранения паролей, ключей и т. Д. c.

Two questions:-

 1. How can I put private keys in application.yml with a variable and
    default value?
 2. How can I put the key in the secrets file in the centralized config?

Рабочий ключ RSA в application.yml без переменной и значения по умолчанию, но для его извлечения мне нужна переменная, которая загружается весной может читать.

   privateKey: |
             -----BEGIN RSA PRIVATE KEY----- 
             Key data
             -----END RSA PRIVATE KEY-----

Я пытался поместить ее в переменную, как мы делаем для журналов, но это не работает.

   privateKey: ${PRIVATE_KEY:|
             -----BEGIN RSA PRIVATE KEY----- 
             Key data
             -----END RSA PRIVATE KEY-----}

Есть ли способ, которым мы можем использовать закрытый ключ в виде строки в application.yml и централизовать его тоже.

Дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 06 апреля 2020

Я использую python и храню ключи в configmap и secrets. Загрузка ключей в формате JSON. Ранее, когда я выбирал ключи от secret, я сталкивался с проблемой /n и пробелами, которые добавлялись и управлялись автоматически.

В python config.py я заменял его на /n и загружал JSON.

Например:

app.config['CLIENT_SECRET'] = json.loads(os.environ.get("CLIENT_SECRET").replace("\'", ""))

здесь тестовый пример ключа для configmap:

CLIENT_SECRET: '{"type": "service_account", "project_id": "test-check-x", "private_key_id": "b0a8b2860c4646db85c7625c3610e4dafd9rr495", "private_key": "-----BEGIN PRIVATE KEY-----\nNGGEvAIBRTANBgkqhkiG9w0BAQEFCCSCBKYwggSiAgEAAoIBAQC2rC4PLop8907yt\nHqFb9BmmetaCwGCDC30XP7zxamyOCnkSVdHfMmVTphR9iajDU1/6PJVTHm5ANeww\n2x6RGn0/Y6Krc63oBuqUTE8ZNemmRef7u1D/EYpizGP8TNrI4wYrChdfdfdKl4V4AI8C\ndpVwQkHPaEtJpDjRiID9Xt3+xbR0RNJg4ueuyie6nBXHQmx+g9ox0DFOj+s79VEB\nQOkqjKQuutHGhPtvomCLqfO+f1NTMXVhePq3gFawuTM0IZ9SF084EsJrKNxsi1yr\nUA8jaHAPckk8boSllFXHHpoU80AahrWd+bd+PdrfSjj95I1cgPYcLYbB7Wu7n1zo\n0SJD1EQLAgMBAAECggEAFGtB/sUctS3LG62H1efUPNgQRa9MBSScnU5XnW4K/QRO\nAkRWNapuycnkmNcGu/FZkiGBgzd+QBkxnJ3HA0CVwtHYAMLpK+gnV9+rxnf7SnBt\nUlCJk5QaBu8tN1TpQ86fWuJBUlmGPCK72Zz4bq2eqO4nNEUcwMyPC+4LHIvBnygh\n/TpM/1SDcgzQGqLCE1cpX4PXyU5P9mSBY9IOrI7gkhKvhVBFEGgVzyzwHBmIfSFJ\nZqtJW/lbfqTt/gm00c4w6jiRROfaWXVif70y2XkCFIdftE5at8Ldfc//oRkCnOxt\niOag1SKN/fX1tmSGBtu3pl7kkF92lMEfiP7Ewvu9SQKBgQDvtRRSnQxniMwBTLib\nNYinH0KB89jEjVDh7RoDx76mdu+2U7RaX4xxCkY3Z/y5lVoCUue+t/14uNRLgQPW\njumKnBOBvT2r7G0C/uwcQbhi1MTK0zoVbrx6MJ8R3gE+6HWEG8J/1+UgyMbGo3aB\nFNe8wja65SEBA/IC6xcFlaMcvwKBgQDDFrFNOOuzUJ06jcBppQISDGs012jdD+Qr\nsTGPetD68oQxhcNHQ44tCRqbmq2iDA7I5YRikabtHIOVIs0rblSXOVEr3sS3kOnU\nGGIKhykDnK8vs4g4t+N/WrZeoD/Ez9Vlpc7VHITnx1/9AVJqJGXvmfco495DmBXC\nSbwZzN5PtQKBgEPxf6ErAqkWDT0REgJsWh+ErMVI6NhNde+T1RvdMhzc+XUkpKo5\nCwW/c8egofG4c5rVBPr6C858FTCRkRTvzSKMurq7eQ+SJBQFTcd0mV7qEB2tYXlR\nufqobW4TDydVnHmlpKu39iokvrLvAlf0IHJQWlL/Pyuagq5xFEVw9JrhAoGAIoiU\n0BegWXiOrHvFMK495JYAMDVlYaRbfoR6Qmy6K4Hcdqu3+phxxXUUGbFSxRmfUF6Y\nhZ5Ezzo57J9hdCuum6pQvRRM/DWRvrKmQDjWwMXumOIN3gRnJ/cVy0BQqXUk0D5+\nk2jd+e1oB3BBd3qD9NrrTnivsoVsbJ0CyApk2/UCgYAtcCnsnkySdDee4IwV7Ns+\nSqKExRX6xt69JrNlCExyTF35+ZyZMrDZR6wxUIVPWn//vVNA9KQiRgfOlCRjvbxe\nl5fRS2auOH1/DztMFUWGhuNXTjlLNgZRKhuJF4txUzdHJnoIXL/8bfMCKYCxZKbmf\nC7huNhJNf+btG27zr8MD7Q==\n-----END PRIVATE KEY-----\n", "client_email": "script-test@test-checck-x.iam.gserviceaccount.com", "client_id": "11425276876957878", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/script-test%40test-chec-x.iam.gserviceaccount.com"}'

Я не очень хорошо представляю себе пружинную загрузку, но она хорошо работает для меня вот так.

...