Тримайте секрети подалі від коду та логів

Використання AWS Security для розробників

Rahul Singh

Technical Product Manager

Не все конфіденційне — це секрет

Три види рядків

  • Секрет: стороння особа може діяти від вашого імені
  • Конфіденційні дані: розкривається особа
  • Конфіг: нічого здобути

Три рядки, що порівнюють секрет, конфіденційні дані та конфіг. У кожному — два приклади значень і що може зробити сторонній: від дій від вашого імені до відсутності вигоди.

Використання AWS Security для розробників

Не все конфіденційне — це секрет

Три види рядків

  • Секрет: стороння особа може діяти від вашого імені
  • Конфіденційні дані: розкривається особа
  • Конфіг: нічого здобути

Дві назви персональних даних

  • PII: personally identifiable information
  • PHI: protected health information

Три рядки, що порівнюють секрет, конфіденційні дані та конфіг. У кожному — два приклади значень і що може зробити сторонній: від дій від вашого імені до відсутності вигоди.

Використання AWS Security для розробників

Чотири шляхи витоку секрету

Секрет у працюючій системі розтікається чотирма шляхами: 1 — у вихідний код і його історію, 2 — у змінні середовища, 3 — у логи застосунку, 4 — у помилки та трейси. Усі сходяться в блок «хтось може прочитати».

  1. Вихідний код і його історія
  2. Змінні середовища
Використання AWS Security для розробників

Чотири шляхи витоку секрету

Секрет у працюючій системі розтікається чотирма шляхами: 1 — у вихідний код і його історію, 2 — у змінні середовища, 3 — у логи застосунку, 4 — у помилки та трейси. Усі сходяться в блок «хтось може прочитати».

  1. Вихідний код і його історія
  2. Змінні середовища
  3. Логи застосунку
  4. Вивід помилок і трейси
Використання AWS Security для розробників

Шифрування на диску — не приховування

Вибір, що здається безпечним

  • Шифрування на диску, завжди
  • Ключ AWS KMS, типово керує AWS

Функція Lambda з змінною середовища має два шляхи. На диску — зашифровано ключем AWS KMS (зелений). Через API виклик GetFunctionConfiguration повертає відкритий текст (червоний). Примітка: захищено лише один шлях.

Використання AWS Security для розробників

Шифрування на диску — не приховування

Вибір, що здається безпечним

  • Шифрування на диску, завжди
  • Ключ AWS KMS, типово керує AWS

Що повертає GetFunctionConfiguration

  • Значення відкритим текстом

Відповідь про зберігання на питання про доступ

Функція Lambda з змінною середовища має два шляхи. На диску — зашифровано ключем AWS KMS (зелений). Через API виклик GetFunctionConfiguration повертає відкритий текст (червоний). Примітка: захищено лише один шлях.

Використання AWS Security для розробників

Яке сховище і чому

Два сервіси, кожен для свого

  • Secrets Manager: створений для секретів
  • Parameter Store: для конфігу; параметр SecureString шифрується ключем KMS

Діаграма-спектр. Зліва — Secrets Manager, справа — Systems Manager Parameter Store; між ними чотири горизонтальні лінії з маркерами 1 ліворуч, 2 лівіше центру, 3 на центрі, 4 праворуч. На четвертій — вартість на кінцях і примітка «rotation is the decider».

Використання AWS Security для розробників

Яке сховище і чому

Два сервіси, кожен для свого

  • Secrets Manager: створений для секретів
  • Parameter Store: для конфігу; параметр SecureString шифрується ключем KMS

Визначають чотири речі

  1. Керована ротація
  2. Спільний доступ між акаунтами
  3. Версіонування
  4. Вартість

Діаграма-спектр. Зліва — Secrets Manager, справа — Systems Manager Parameter Store; між ними чотири горизонтальні лінії з маркерами 1 ліворуч, 2 лівіше центру, 3 на центрі, 4 праворуч. На четвертій — вартість на кінцях і примітка «rotation is the decider».

Використання AWS Security для розробників

Читати свіжим, кешувати коротко

Ваш процес викликає GetSecretValue у сховищі (1), з роллю з обмеженням (2) до одного ARN секрету плюс kms:Decrypt, і тримає значення в кеші в пам'яті (3) перед зверненням до БД чи API партнера.

  1. Викличте GetSecretValue на старті
  2. Роль з доступом лише до одного ARN секрету плюс kms:Decrypt
Використання AWS Security для розробників

Читати свіжим, кешувати коротко

Ваш процес викликає GetSecretValue у сховищі (1), з роллю з обмеженням (2) до одного ARN секрету плюс kms:Decrypt, і тримає значення в кеші в пам'яті (3) перед зверненням до БД чи API партнера.

  1. Викличте GetSecretValue на старті
  2. Роль з доступом лише до одного ARN секрету плюс kms:Decrypt
  3. Кешуйте значення в пам'яті

Закешуєте назавжди — ротація зламає вас

Використання AWS Security для розробників

Ротація рухає значення під вами

Чому чотири кроки, а не одна підміна

  • Нове значення перевірене до використання
  • Одна підміна зламає всіх клієнтів одночасно

Три колонки: кроки ротації, мітка і ваш кеш. Secrets Manager запускає createSecret, setSecret, testSecret, далі пунктир — момент, коли finishSecret рухає мітку. Вище мітка AWSCURRENT дорівнює старому значенню й кеш вірний; нижче AWSCURRENT — нове значення, той самий кеш заштриховано червоним. Два рішення: коротке життя кешу та оновлення при збої автентифікації.

Використання AWS Security для розробників

Ротація рухає значення під вами

Чому чотири кроки, а не одна підміна

  • Нове значення перевірене до використання
  • Одна підміна зламає всіх клієнтів одночасно

Чотири кроки, одна передача

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Три колонки: кроки ротації, мітка і ваш кеш. Secrets Manager запускає createSecret, setSecret, testSecret, далі пунктир — момент, коли finishSecret рухає мітку. Вище мітка AWSCURRENT дорівнює старому значенню й кеш вірний; нижче AWSCURRENT — нове значення, той самий кеш заштриховано червоним. Два рішення: коротке життя кешу та оновлення при збої автентифікації.

Використання AWS Security для розробників

Ротація рухає значення під вами

Чому чотири кроки, а не одна підміна

  • Нове значення перевірене до використання
  • Одна підміна зламає всіх клієнтів одночасно

Чотири кроки, одна передача

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Ніхто не повідомить ваш кеш

  • Життя — хвилини, потім перечитати
  • Оновлюйте при збої автентифікації

Три колонки: кроки ротації, мітка і ваш кеш. Secrets Manager запускає createSecret, setSecret, testSecret, далі пунктир — момент, коли finishSecret рухає мітку. Вище мітка AWSCURRENT дорівнює старому значенню й кеш вірний; нижче AWSCURRENT — нове значення, той самий кеш заштриховано червоним. Два рішення: коротке життя кешу та оновлення при збої автентифікації.

Використання AWS Security для розробників

Маскуйте, вилучайте, зберігайте дебаг

Сира строка логу з ID запиту, повним номером картки і токеном (виділено червоним). Нижче — після обробки: ID без змін, картка замаскована до останніх 4 цифр, токен — замінено на «редаговано». Примітка: достатньо для налагодження.

Очищуйте перед записом

  • Маскування: форма збережена, значення приховане
Використання AWS Security для розробників

Маскуйте, вилучайте, зберігайте дебаг

Сира строка логу з ID запиту, повним номером картки і токеном (виділено червоним). Нижче — після обробки: ID без змін, картка замаскована до останніх 4 цифр, токен — замінено на «редаговано». Примітка: достатньо для налагодження.

Очищуйте перед записом

  • Маскування: форма збережена, значення приховане
  • Вилучення: значення стерто, лишено маркер
Використання AWS Security для розробників

Маскуйте, вилучайте, зберігайте дебаг

Сира строка логу з ID запиту, повним номером картки і токеном (виділено червоним). Нижче — після обробки: ID без змін, картка замаскована до останніх 4 цифр, токен — замінено на «редаговано». Примітка: достатньо для налагодження.

Очищуйте перед записом

  • Маскування: форма збережена, значення приховане
  • Вилучення: значення стерто, лишено маркер

Черговому потрібен конфіг, сторонньому — все інше ні

Використання AWS Security для розробників

Давайте потренуємось!

Використання AWS Security для розробників

Preparing Video For Download...