Трудно полностью защитить что-либо от владельца учетной записи AWS.
Чтобы привести пример, подумайте о мире до облачных вычислений. Если у кого-то есть физический доступ к компьютеру, он может открыть корпус и извлечь жесткий диск . Подключив диск к другому компьютеру, они могли читать содержимое. Но, вы можете сказать, что, если содержимое защищено паролем? Да, это помогло бы, но как приложение получает доступ к содержимому, не зная пароля?
Точно так же и в облаке. Если вы используете экземпляр Amazon EC2, то диск можно скопировать через снимок и подключить к другому компьютеру. Содержимое можно прочитать.
Вы можете быть super-smart и знать, как создать экземпляр EC2 с зашифрованным томом, который может загружать и обслуживать трафик, не давая людям разрешения на вход в систему. Если они подключают диск к другому экземпляру EC2, он должен быть нечитаемым, поскольку загрузочный том зашифрован. (Но тогда как это работает при загрузке?)
Если вы хотите быть полностью уверены в защите своего кода, я бы порекомендовал:
- Использовать свою учетную запись AWS (поэтому у них нет доступа)
- Настройка Консолидированный биллинг (поэтому они получают счет, но не имеют доступа к учетной записи)
- Укажите API , который они могут вызвать (через API Gateway + Lambda или экземпляр Amazon EC2). Вы даже можете получить фантазию и использовать AWS PrivateLink - параметры подключения к виртуальному частному облаку Amazon , которые предоставляют сервис в другой учетной записи AWS без прохождения через Интернет.
В результате только у вас есть общий доступ к ресурсам, но они платят за аккаунт . Это будет работать только в том случае, если у вас есть одиночный клиент, пользующийся услугой, поскольку вся стоимость этой учетной записи пойдет на них. (Это было бы неуместно, если вы обслуживаете нескольких клиентов с одного аккаунта.)