
Ich arbeite mit einer anderen Person an einem Projekt, nennen wir ihn Bob.
Ich möchte eine proprietäre Software auf einer Amazon EC2-Instanz ausführen. Diese Software sendet Netzwerkpakete (HTTP-Anfragen) an einen externen Server.
Ich möchte nicht, dass Bob Zugriff auf diese Software erhält. Ich möchte jedoch, dass Bob mich daran hindern kann, Netzwerkpakete zu versenden, und zwar so, dass ich ihn in Zukunft nicht mehr daran hindern kann.
Ich bin nicht sicher, wie. Vielleicht indem man Bob irgendwie die Macht gibt, die Instanz zu beenden, vielleicht indem man ihm irgendwie die Möglichkeit gibt, das Aussenden der Pakete zu stoppen, ich weiß es nicht.
Würde mich über Ideen freuen, wie dies mit minimaler zusätzlicher Latenz erreicht werden kann (das Weiterleiten meiner Pakete über eine separate EC2-Instanz, die Bob gehört, wäre beispielsweise zu langsam). Danke!
Antwort1
Erstellen Sie für Bob einen IAM-Benutzer mit einer angehängten Richtlinie, die ihm nur sehr eingeschränkte Rechte einräumt, gerade genug, um Instanzen anzuzeigen und diese eine Instanz zu starten/stoppen – nicht, sie zu beenden. Der Kern der Richtlinie wird wahrscheinlich so ähnlich aussehen, aber Sie müssen sie testen/anpassen.
{
"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"
}
]
}
Bob benötigt wahrscheinlich mehr Berechtigungen, aber Sie werden sie entdecken, wenn Sie dies versuchen. Ich würde Bob wahrscheinlich einer Gruppe zuordnen und die Berechtigungen einer Gruppe zuweisen, anstatt direkt dem Benutzer.
Antwort2
Solange Sie der Kontoinhaber sind, kontrollieren Sie, was Bob tun kann und was nicht, aber Sie können sich nur freiwillig einschränken. Wenn Bob der Kontoinhaber ist, können Sie ihn nicht daran hindern, zu tun, was er will. In Ihrem Fall möchten Sie für Sie beide Einschränkungen festlegen. Eine Möglichkeit, dies zu lösen, besteht darin, dass eine vertrauenswürdige dritte Partei das Konto öffnet und Berechtigungen für Sie beide festlegt.
Antwort3
Hier ist eine andere Idee:
Schreiben Sie Ihre Software so, dass zum Betrieb ein „Lizenzschlüssel“ erforderlich ist. Die Software kann verschlüsselt sein oder eine ähnliche Eigenschaft aufweisen, sodass sie ohne den Schlüssel nicht ausgeführt werden kann. Der Schlüssel wird auf einem Server gespeichert, den Sie kontrollieren.
Bob hat einen Server, den er kontrolliert, aber die Software darauf benötigt Ihren Schlüssel, um zu laufen. Bob kann den Server nach Belieben beenden, aber er kann Ihre Software nicht ohne Ihren Schlüssel stehlen – den Sie kontrollieren.
Softwareschlüssel sind nicht narrensicher. Es ist möglich, Ihre Software zurückzuentwickeln. Dies sollte jedoch nicht zu zeitaufwändig oder teuer sein.
Dies ist die gleiche Idee, die alle großen Softwarehersteller zur Steuerung ihrer Software verwenden. MS Windows ist ein perfektes Beispiel.