안녕하세요 여러분,
다른 기업들이 스크립트를 기업 IP로 보호하기 위해 어떤 노력을 하고 있는지, 그리고 스크립트 사용을 로깅하고 있는지 알고 싶습니다. 스크립트 로깅은 어떤 스크립트가 가장 널리 사용되는지 파악하고 그에 따라 적절한 조치를 취할 수 있도록 도와줍니다.
현재 방법은 암호화된 스크립트 사용을 네트워크 드라이브에 기록하는 것인데, 이를 위해서는 사용자가 네트워크에서 이미 인증되어야 합니다. JMP 스크립트가 네트워크 드라이브에 액세스할 수 없으면 스크립트가 종료됩니다. 액세스할 수 있으면 스크립트 이름, 사용자 이름, 날짜/시간과 같은 스크립트 사용 정보를 네트워크 디렉터리에 텍스트 파일로 기록합니다. 이 작업에 걸리는 시간은 상당히 길어서, 사용자 위치와 서버, 그리고 네트워크 상황에 따라 10초 이상 걸릴 수도 있습니다. 대부분 파일 쓰기 작업 때문인 것 같습니다. 사용자 관점에서 보면 좋지 않습니다. JMP가 스크립트의 GUI를 여는 데 지나치게 많은 시간을 소모하는 것 같지만, 실제로는 서버에 연결하고 파일을 쓰는 데 시간이 소모됩니다. 네트워크 문제를 해결할 수 없고 몇 가지 해결 방법이 있지만, 이 글을 읽고 다른 대안이 있는지 알고 싶습니다.
참고: 스크립트를 볼 때는 암호화하지만, 실행할 때는 암호화하지 않습니다.
현재의:
- 스크립트 실행
- 네트워크 경로가 존재하는지 확인하세요
- 존재하는 경우, 사용 정보를 기록하고(시간이 많이 걸림) 스크립트를 계속 진행합니다. csv 파일에 텍스트를 저장하려면 savetextfile() 명령을 사용하세요.
- 이렇게 하면 인증 확인과 사용 기록이 모두 완료됩니다. 인증 확인만 필요하다면 디렉토리 존재 여부만 확인하면 충분하며, 꽤 빠른 것 같습니다.
- 그렇지 않으면 스크립트를 종료하세요
제안 1:
- 스크립트 실행
- authentication_namespace가 존재하지 않는 경우(JMP 세션 내에서 처음으로 인증을 확인하는 경우)
- 참고: 여기서 "authentication_namespace"는 생성 가능한 네임스페이스와 그 안에 생성되는 변수를 의미합니다. JMP 세션의 모든 스크립트는 해당 네임스페이스가 생성되었는지 또는 아직 존재하지 않는지 확인할 수 있습니다. 인증 후 이 네임스페이스를 생성하는 데 사용할 수 있습니다.
- 네트워크 디렉토리가 존재하는 경우(사용자가 회사 네트워크에 있는지 확인)
- authentication_namespace를 생성합니다. 그 안에 변수를 생성할 수도 있지만, 굳이 그럴 필요는 없을 것 같습니다. 나중에 변수의 존재 여부를 확인하면 됩니다.
- 로컬 로깅 파일을 찾아 이전에 로컬로 로깅된 모든 스크립트 사용 데이터를 서버에 업로드합니다.
- 인증 중에만 이 작업을 수행하면 최소한 JMP 세션당 한 번만 쓰는 데 소요되는 시간이 줄어듭니다.
- 문제: 파일을 몇 개나 선택해야 할까요? 기본 디렉터리의 'log' 폴더에 저장해서 로그 파일만 볼 수 있도록 하려고 합니다. 하지만 손상된 파일이 있다면 어떨까요? 아니면 사용자가 파일을 따로 열면 어떨까요? 아니면 사용자가 스크립트를 두 번 클릭해서 같은 타임스탬프(가장 최근 파일)로 여러 파일이 생성된다면 어떨까요? 아니면 JMP 세션이 여러 개 열려 있다면 어떨까요? 이후 JMP 세션에서는 네임스페이스 참조에는 접근할 수 없고, 우리가 지정한 이름에만 접근할 수 있습니다. 등등...
- 네트워크 디렉토리가 존재하지 않으면 사용자가 네트워크에 없으므로 종료합니다.
- authentication_namespace가 존재하는 경우(사용자가 이 JMP 세션 내에서 인증된 것으로 이전에 확인된 경우) 로컬로 기본 디렉토리 \ 로그 폴더에 사용을 기록합니다.
- 파일이 존재하지 않으면 파일을 생성하고 로그 정보를 저장합니다.
- 파일이 있으면 로그 정보를 추가합니다.
- (위에 설명된 주의 사항, 여러 파일 등)
- 지금은 정보를 서버로 전송할 필요가 없습니다. JMP 세션 내에서 처음으로 인증을 확인할 때만 전송하세요.
위의 방법은 가능하지만 복잡해지고 문제가 발생할 수 있습니다. 사용자가 수백 명인 경우 문제가 발생하면 디버깅하기가 매우 어려울 것입니다.
제안 2:
현재 방식과 유사하지만, 네트워크 디렉터리가 있는지 확인하는 빠른 확인 작업과 JMP가 기다릴 필요가 없는 로깅 작업을 시작하는 방식으로 네트워크 검증을 수행합니다. 이것이 가능한지 잘 모르겠습니다. JMP에서 원격으로 파일에 쓰기 작업을 시작하되 완료될 때까지 기다리지 않도록 할 수 있을까요? 그렇게 하면 문제가 훨씬 간단해질 것입니다.
이 주제에 대해 다른 대안이 있다면 알려주시기 바랍니다.
감사해요
마이크
Run Program()을 사용하면 작업을 시작하고 완료될 때까지 기다리지 않아도 될 것 같습니다.
전반적으로 이런 유형의 로깅은 금방 복잡해지므로 하지 않을 것입니다. 만약 정말 해야 한다면, 이를 지원하는 적절한 시스템(API를 갖춘 HTTP 서버와 로그 저장용 데이터베이스)을 구축하고 JMP의 새로운 HTTP 요청을 사용하여 데이터를 전송할 것입니다.
"금방 복잡해진다"는 말은 기술적이지 않은 많은 내용을 포괄합니다.