Разрешить отключение или блокировку экземпляра EC2 другой стороной

Разрешить отключение или блокировку экземпляра EC2 другой стороной

Я работаю над проектом с другим человеком, назовем его Боб.

Я хотел бы запустить часть фирменного ПО на экземпляре Amazon EC2. Это ПО будет отправлять сетевые пакеты (HTTP-запросы) на внешний сервер.

Я не хочу, чтобы Боб мог завладеть этим программным обеспечением. Однако я хочу, чтобы Боб мог помешать мне отправлять сетевые пакеты таким образом, чтобы я никогда не смог помешать ему делать это в будущем.

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

Хотелось бы услышать идеи о том, как это можно сделать с минимальной дополнительной задержкой (например, маршрутизация моих пакетов через отдельный экземпляр EC2, которым владеет Боб, будет слишком медленной). Спасибо!

решение1

Создайте Боба как пользователя IAM с прикрепленной политикой, которая дает ему очень ограниченные права, достаточные только для просмотра экземпляров и запуска/остановки этого экземпляра, но не для его завершения. Ядро политики, скорее всего, будет примерно таким, но вам нужно будет его протестировать/настроить.

{
  "Version": "2012-10-17",
  "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "ec2:Describe*"
        ],
        "Resource": "*"
    },
    {
        "Sid": "VisualEditor1",
        "Effect": "Allow",
        "Action": [
            "ec2:StartInstances",
            "ec2:StopInstances"
        ],
        "Resource": "arn:aws:ec2:::instance/i-012345"
    }
  ]
}

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

решение2

Пока вы являетесь владельцем учетной записи, вы контролируете, что Боб может или не может делать, но вы можете ограничить себя только добровольно. Если Боб является владельцем учетной записи, вы не можете помешать ему делать то, что ему заблагорассудится. В вашем случае вы хотите наложить ограничения на вас обоих. Один из способов решения этой проблемы — иметь доверенную третью сторону, которая будет входить в учетную запись и устанавливать разрешения для вас обоих.

решение3

Вот еще одна идея:

Напишите свое программное обеспечение таким образом, чтобы для его работы требовался «лицензионный ключ». Программное обеспечение может быть зашифровано или иметь некоторые другие подобные характеристики, так что оно не сможет работать, если ключ не доступен. Ключ будет храниться на сервере, который вы контролируете.

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

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

Это та же идея, которую используют все основные производители программного обеспечения для управления своим программным обеспечением. MS Windows — прекрасный пример.

Связанный контент