
私はボブという別の人と一緒にプロジェクトに取り組んでいます。
Amazon EC2 インスタンスで独自のソフトウェアを実行したいと考えています。このソフトウェアは、ネットワーク パケット (HTTP リクエスト) を外部サーバーに送信します。
私はボブがこのソフトウェアを入手できないようにしたいのですが、将来ボブがネットワーク パケットを送信するのを私が阻止できないようにボブがネットワーク パケットを送信するのを阻止できるようにしたいのです。
方法はよくわかりません。おそらく、何らかの方法で Bob にインスタンスを終了する権限を与えるか、パケットの送信を停止する権限を与えるか、どちらかでしょう。わかりません。
最小限の追加遅延でこれを実現する方法についてのアイデアをぜひお聞かせください (たとえば、Bob が所有する別の EC2 インスタンスを介してパケットをルーティングすると、遅すぎるでしょう)。ありがとうございます!
答え1
Bob に、インスタンスの表示とそのインスタンスの起動/停止 (終了は不可) のみの非常に限定された権限のみを付与するポリシーが添付された 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"
}
]
}
Bob にはさらに多くの権限が必要になる可能性がありますが、これを試してみるとわかります。おそらく Bob をグループに入れて、権限をユーザーに直接割り当てるのではなく、グループに割り当てることになります。
答え2
アカウントの所有者である限り、ボブができること、できないことを制御できますが、制限できるのは自発的にのみです。ボブがアカウントの所有者である場合、ボブの好きなことを止めることはできません。あなたの場合は、あなたとボブの両方に制限を課したいのです。これを解決する 1 つの方法は、信頼できる第三者にアカウントを許可してもらい、あなたとボブの両方に権限を設定することです。
答え3
もう一つのアイデアは:
ソフトウェアを、動作するために「ライセンス キー」を必要とするように作成します。ソフトウェアは暗号化するか、キーがなければ実行できないような他の類似の特性を持たせることができます。キーは、管理するサーバー上に保存されます。
ボブは自分が管理するサーバーを持っていますが、そのサーバー上のソフトウェアを実行するにはあなたのキーが必要です。ボブは好きなようにサーバーを終了できますが、あなたが管理するキーがなければソフトウェアを盗むことはできません。
ソフトウェア キーは絶対確実ではありません。ソフトウェアをリバース エンジニアリングすることは可能です。ただし、これを行うには時間がかかりすぎたり、コストがかかったりしないようにする必要があります。
これは、すべての大手ソフトウェア メーカーが自社のソフトウェアを制御するために使用しているのと同じ考え方です。MS Windows は完璧な例です。