다양한 AWS 서비스에 대한 프로그래밍 방식 액세스를 위해 대기업에서 사용하는 모범 사례를 알고 싶습니다. 여러 프로그램이 서로 다른 서비스에 액세스해야 하는데 어떻게 관리됩니까? 서로 다른 2개 서비스에 대해 각 프로그램에 대해 여러 액세스 키를 만들었나요, 아니면 모든 서비스에 액세스할 수 있는 단일 액세스 키를 만들었나요?
답변1
EC2/Lambda 등의 AWS 리소스에 대한 모범 사례는 IAM 역할을 사용하는 것입니다.여기. 즉, 서버에 대한 사용자를 생성하는 것이 아니라 서비스가 EC2 서버와 연결된 권한 세트를 가지고 있다고 가정할 수 있는 역할을 생성합니다.
역할이 있는 해당 서버에는 실행 시 "임시" 자격 증명이 부여되므로 IAM 역할이 허용하는 모든 서비스에 액세스할 수 있습니다. "임시"라고 말하면 서비스에 제공되는 자격 증명의 수명은 약 24시간 정도이지만 만료되면 새 자격 증명이 발급됩니다. 이를 사용하는 소프트웨어를 작성하지 않는 한 이는 일반적으로 투명하며, 이 경우 가끔씩 확인해야 합니다. 미세한 세부 사항이 바로 거기에 없을 수도 있지만 어느 정도 정확합니다.
AWS에는 역할을 더 쉽게 정의할 수 있는 사전 정의된 정책이 있습니다.
예를 들어, "이 역할을 가진 EC2 서버는 SQS로 푸시하고, SQS에서 풀하고, 이 하나의 람다 함수를 실행할 수 있습니다"라는 역할을 정의할 수 있으며 명시적으로 부여되지 않은 모든 것은 거부됩니다. 때로는 필요한 권한을 얻기 위해 약간의 실험이 필요합니다. EC2 서버와 같은 리소스가 손상된 경우 AWS에 대한 관리자 권한이 없고 모든 것을 삭제하거나 암호화 마이닝을 시작할 수 없도록 최소 권한이 가장 좋습니다.
AWS 작업을 수행하는 대기업에서 일하고 있다면 AWS 교육을 받는 것이 좋습니다. Cloud Guru와 같은 곳에서 AWS Architect Associate에 대한 온라인 교육은 최소한 필요합니다. AWS는 복잡합니다. 저는 수년간 AWS에서 풀타임으로 일해왔지만 매일 새로운 것을 배웁니다.
답변2
우선 리소스(예: SQS, EC2, ElastiCache 등)에 대해 사전 정의된 액세스 정책이 필요합니다. 그런 다음 프로그래밍 방식의 액세스 권한이 있는 사용자를 추가하고 자격 증명을 안전한 방법으로 저장하거나 역할을 사용하여 액세스용 서비스에 할당할 수 있습니다. 예를 들어 RDS에 액세스하기 위한 IAM 역할을 생성하고 이를 ec2 인스턴스에 할당한 다음 ec2 인스턴스에서 데이터베이스에 액세스해 보십시오.