인증이 가장 간단하고, 쉽고, 가장 편리하고, 최소한의 유지 관리 작업으로 모든 권한을 모든 사용자에게 부여하는 것이 당연히 가장 쉽고 편리한 방법이라는 것은 모두가 알고 있다고 생각합니다. 그러나 우리 모두는 사용자의 권한이 클수록 그가 우리 시스템에 가져오는 잠재적인 위협도 커진다는 것을 확실히 알고 있습니다. 따라서 보안 관점에서 볼 때 부여되는 권한은 작을수록 좋습니다. 충분한 보안 인식을 갖춘 관리자는 권한 부여 시 꼭 필요한 권한만 부여하고, 불필요한 권한은 부여하지 않습니다. 이번 장에서는 보안에 대해 중점적으로 다루었으므로 이제 보안 관점에서 보다 안전하고 합리적인 권한 부여 전략을 설계하는 방법을 살펴보겠습니다.
먼저 방문 호스트를 이해해야 합니다.
MySQL 데이터베이스 로그인은 사용자 이름과 비밀번호 외에 사용자를 확인하므로 소스 호스트도 확인해야 합니다. 따라서 각 사용자가 어떤 호스트에서 연결을 시작할 수 있는지도 알아야 합니다. 물론 인증 시 모든 호스트에 접근 권한을 부여하기 위해 "%" 와일드카드를 직접 사용할 수도 있지만, 이는 보안 정책 원칙에 어긋나고 잠재적인 위험을 초래하므로 바람직하지 않습니다. 특히 LAN에 방화벽 보호가 없으면 어떤 호스트에서든 로그인할 수 있는 사용자가 쉽게 존재하도록 허용할 수 없습니다. 특정 호스트 이름이나 IP 주소로 지정할 수 있는 경우 특정 호스트 이름이나 IP 주소로 지정할 수 없는 경우에는 방문 호스트도 제한해야 합니다. 가능한 한 작은 와일드카드 범위를 사용합니다.
둘째, 사용자의 요구를 이해합니다.
필요한 권한만 부여하고 싶기 때문에 각 사용자가 수행하는 역할을 이해해야 합니다. 즉, 각 사용자가 데이터베이스에 연결하여 완료해야 하는 작업이 무엇인지 완전히 이해해야 합니다. 사용자가 읽기 전용 애플리케이션 사용자인지 아니면 읽기-쓰기 계정인지, 사용자가 백업 작업 사용자인지 아니면 일일 관리 계정인지, 사용자가 특정(또는 소수) 데이터베이스(스키마)에만 액세스하면 되는지 파악합니다. ), 여전히 모든 데이터베이스에 액세스해야 합니다. 수행해야 할 작업을 이해해야만 어떤 권한을 부여해야 하는지 정확하게 이해할 수 있습니다. 권한이 너무 낮으면 작업이 정상적으로 완료되지 않고, 권한이 너무 높으면 잠재적인 보안 위험이 있기 때문입니다.
다시 작품을 분류해 보세요.
각자의 업무를 수행하기 위해서는 수행해야 할 작업을 분류하고, 업무 카테고리별로 다른 사용자를 활용하고, 사용자 분리를 잘 해야 합니다. 이로 인해 관리 비용 측면에서 일부 작업 부하가 증가할 수 있지만 보안 고려 사항에 따라 이러한 관리 작업 부하 증가는 그만한 가치가 있습니다. 그리고 우리가 해야 할 사용자 분리는 중간 정도의 분리입니다. 예를 들어, 백업 작업, 복제 작업, 일반 애플리케이션 액세스, 읽기 전용 애플리케이션 액세스, 일일 관리 작업을 수행하는 특정 계정을 분리하여 각각에 필요한 권한을 부여합니다. 이를 통해 보안 위험을 최소화할 수 있으며, 동일한 유형 및 수준의 유사한 권한을 서로 얽히지 않고 병합할 수 있습니다. PROCESS, FILE, SUPER와 같은 특수 권한은 관리 계정에만 필요하며 다른 비관리 계정에는 부여하면 안 됩니다.
마지막으로 GRANT OPTION 권한이 반드시 필요한 사용자만 확인하세요.
이전에 권한 시스템을 소개했을 때 GRANT OPTION 권한의 특수성과 이 권한을 갖는 데 따른 잠재적 위험에 대해 배웠으므로 여기서는 자세히 설명하지 않겠습니다. 즉, 보안상의 이유로 GRANT OPTION 권한을 가진 사용자가 적을수록 더 좋습니다. 슈퍼 권한을 가진 사용자만 GRANT OPTION 권한을 갖습니다.
위 내용은 MySQL 접근권한 정책 내용입니다. 자세한 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!