다른 사용자로 PHP 파일을 안전하게 실행하는 방법은 무엇입니까?

다른 사용자로 PHP 파일을 안전하게 실행하는 방법은 무엇입니까?

보안 문제와 관련이 있으므로 내 생각이 맞는지 확인하고 싶습니다.

우리는 db2 데이터베이스를 사용하는 웹 기반 애플리케이션을 가지고 있습니다. db2는 db2inst1이 사용자로 실행됩니다.

이제 우리는 웹 애플리케이션 사용자가 db2 백업 이미지를 playschool이라고 부르는 데이터베이스로 복원할 수 있기를 원합니다. 이 게임 스쿨을 사용하면 프로덕션 데이터베이스에 해를 끼치지 않고 "플레이"할 수 있습니다. 이를 위해서는 db2restorePHP 함수를 통해 PHP 스크립트를 실행해야 합니다 exec().

충분히 안전합니까?다음 조건에서는 누구도 PHP 사용자로서 db2 명령을 남용하거나 실행할 수 없는지 확인하십시오.

  • 우리는 이 줄을 다음에 추가합니다./etc/sudoers

    php ALL=(db2inst1) NOPASSWD: /opt/eduserver/bin/db2restore
    
  • 그런 다음 PHP 스크립트 db2restore에서 이 명령을 실행하세요.

    exec('sudo -u db2inst1 /opt/eduserver/bin/db2restore');
    

노트

  • 모든 최종 사용자가 웹 인터페이스를 통해 db2restore를 실행할 수 있는 권한을 갖고 있는 것은 아니며, 관리자 그룹만이 자신이 수행 중인 작업을 "알아야" 합니다.
  • 최종 사용자는 서버의 명령줄에 액세스할 수 없습니다.
  • 웹 서버를 통해 db2restore에 액세스할 수 없습니다.

답변1

나는 이것에 본질적으로 잘못된 것이 없다고 생각합니다. 눈에 띄는 유일한 점은 예를 들어 db2restore 파일이 루트가 아닌 db2inst1에 속한 경우 누군가가 db2restore의 컨텐츠로 게임을 할 수 있다는 것입니다.

또한 이 Playschool 데이터베이스가 프로덕션 시스템에 없다고 가정합니다. 그렇다면 개발자가 프로덕션 데이터베이스에 로그인했다면 이는 좋지 않은 생각입니다.

일반적으로 데이터베이스에 대한 액세스 권한을 부여할 때 항상 데이터베이스에 사용자 계정을 만든 다음 해당 특정 사용자 계정에 특정 기능(추가, 삭제 등)을 부여합니다.

관련 정보