
저는 다른 사람과 함께 프로젝트를 진행하고 있습니다. 그 사람을 Bob이라고 부르세요.
Amazon EC2 인스턴스에서 독점 소프트웨어를 실행하고 싶습니다. 이 소프트웨어는 네트워크 패킷(HTTP 요청)을 외부 서버로 보냅니다.
나는 Bob이 이 소프트웨어를 사용하는 것을 원하지 않습니다. 그러나 나는 Bob이 앞으로 내가 네트워크 패킷을 보내는 것을 막을 수 없는 방식으로 Bob이 나를 막을 수 있기를 원합니다.
어떻게 될지 잘 모르겠습니다. 어쩌면 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
귀하가 계정의 소유자인 한 Bob이 할 수 있는 일과 할 수 없는 일을 통제할 수 있지만 자발적으로만 제한할 수 있습니다. Bob이 계정의 소유자라면 그가 원하는 대로 행동하는 것을 막을 수 없습니다. 귀하의 경우에는 두 사람 모두에게 제한을 두기를 원합니다. 이 문제를 해결하는 한 가지 방법은 신뢰할 수 있는 제3자가 계정을 열어 두 사람 모두에 대한 권한을 설정하도록 하는 것입니다.
답변3
또 다른 아이디어는 다음과 같습니다.
작동하려면 "라이센스 키"가 필요한 방식으로 소프트웨어를 작성하십시오. 소프트웨어는 암호화되거나 키를 사용할 수 없으면 실행할 수 없는 다른 유사한 특성을 가질 수 있습니다. 키는 귀하가 제어하는 서버에 저장됩니다.
Bob은 자신이 제어하는 서버를 가지고 있지만 그 서버의 소프트웨어를 실행하려면 키가 필요합니다. Bob은 원하는 대로 서버를 종료할 수 있지만 귀하가 제어하는 키 없이는 소프트웨어를 훔칠 수 없습니다.
소프트웨어 키는 완벽하지 않습니다. 소프트웨어를 리버스 엔지니어링하는 것이 가능합니다. 하지만 그렇게 하려면 시간이 너무 많이 걸리거나 비용이 많이 들 수 있어야 합니다.
이는 모든 주요 소프트웨어 제조업체가 소프트웨어를 제어하기 위해 사용하는 것과 동일한 아이디어입니다. MS Windows가 완벽한 예입니다.