GN⁺: "auth" 대신 "permissions"와 "login"을 사용합시다
(ntietz.com)- "auth"라는 용어는 인증(authentication)과 권한 부여(authorization) 두 가지 의미를 가짐
- 이로 인해 라이브러리나 패키지 이름에서 혼란이 발생함
- "authn"과 "authz"라는 용어는 명확하지 않고 이해하기 어려움
인증과 권한 부여의 차이
- 인증(authentication): 사용자가 누구인지 확인하는 과정
- 권한 부여(authorization): 사용자가 무엇을 할 수 있는지 결정하는 과정
- 두 개념은 서로 다르며, 하나를 해결한다고 다른 문제가 해결되지 않음
"permissions"와 "login" 사용 제안
- 인증을 "login"으로, 권한 부여를 "permissions"로 명확히 구분할 것을 제안함
- "login"은 명사와 동사 형태로 사용 가능함
- 명사: 시스템에 접근하기 위해 입력하는 정보
- 동사: 시스템을 사용하기 위해 로그인하는 행위
- "permissions"는 명사 형태로 사용하며, 동사 형태로는 "check permissions"를 사용함
명확한 용어 사용의 장점
- 소프트웨어 엔지니어 외의 다른 분야 사람들도 쉽게 이해할 수 있음
- 더 나은 추상화를 가능하게 함
- 인증과 권한 부여를 별도의 모듈로 분리하여 설계할 수 있음
GN⁺의 의견
- 명확한 용어 사용의 중요성: 용어가 명확하면 커뮤니케이션이 원활해지고, 오해를 줄일 수 있음.
- 추상화의 이점: 인증과 권한 부여를 분리하면 시스템 설계가 더 유연해지고 유지보수가 쉬워짐.
- 다른 용어의 사용 예시: "login"과 "permissions" 외에도 "access control" 같은 용어도 고려해볼 만함.
- 기술 도입 시 고려사항: 새로운 용어를 도입할 때는 팀 내에서 충분한 논의와 합의가 필요함.
- 관련 프로젝트 추천: 인증과 권한 부여를 분리한 대표적인 프로젝트로는 OAuth와 OpenID Connect가 있음.
Authentication 과 Authorization 둘 다 Auth 로 줄일 수 있는게 문제라면,
본문에서 언급됐던 것 같이 Authn, Authz 로 충분할거 같은데 말이죠...
이게 명확하지 않다 생각했다면, Authenty, Authory 까지 좀 더 풀어도 괜찮을거구요.
개발자끼리는 auth 대신 authn, authz를, 사용자와 접점이 있는 문서나 컨트롤러/파사드에 login, permission을 사용하는건 동의할 만 합니다. 다만 authn, authz까지 없애자는 건 그럴 필요가 있나 싶습니다
본문에 지적하듯이 auth가 인증과 권한을 중의적으로 사용되어 혼란스럽긴 했었죠. 순순한 개발자 외 다른 분야와 comm을 위해 좀 더 일반적인 용어를 통해 분리하는 건 바람직한 시도 같습니다.
Hacker News 의견
- "Authorize"와 "Authenticate"는 중세 시대부터 사용된 훌륭한 단어임. 두 단어의 의미는 크게 변하지 않았음.
- 이 두 단어는 암호 시스템에서 중요한 차이를 가짐. 혼동을 줄이기 위해 단어를 바꾸는 것은 도움이 되지 않을 것 같음.
- "auth"라는 이름 때문에 혼란이 생긴다는 주장은 설득력이 부족함. 단어를 바꾸는 것이 문제를 해결하지 못할 것 같음.
- "authn"과 "authz"라는 약어를 사용하는 것이 좋음. 하지만 긴 단어를 사용하는 것도 괜찮음.
- "Identity"와 "Access" Management (IAM)는 표준 용어임. 개인적으로 "authnz"라는 용어를 선호함.
- "Login"은 토큰이나 키 기반 인증을 포함하지 않음. 서비스 계정은 로그인하지 않지만 인증과 권한 부여가 필요함.
- Authn과 Authz의 구분이 명확하지 않음. 때로는 명확한 용어보다 멋진 용어를 더 좋아하는 것 같음.
- IAM 시스템에서 "auth"라는 용어를 사용하는 데 문제가 없었음. 더 구체적인 표현이 필요할 때는 적절한 구를 사용하면 됨.
- "login"과 "permissions"는 시스템의 전체 의미와 복잡성을 포착하지 못함. 인증은 로그인보다 더 많은 의미를 가짐.
- 인증과 권한 부여는 밀접하게 관련되어 있음. 인증 없이 권한 부여가 불가능함.
- 로그인은 인증의 대체 용어로 적합하지 않음. 인증에는 로그인이 필요하지 않은 경우도 있음.
- "auth"는 인증과 권한 부여를 모두 의미할 수 있음. 두 개념이 자주 함께 사용되기 때문임.
- 인증과 권한 부여는 IT와 정보 보안에서 표준 용어임. 혼란을 피하려면 완전한 단어를 사용하는 것이 좋음.
- "authn"과 "authz"는 기술적인 사람들 사이에서 충분히 사용 가능함. 일반 대중에게는 "login"과 "permissions"를 사용하는 것이 좋음.
- 실생활에서도 유사한 개념이 존재함. 예를 들어, 작업 배지는 신원을 확인하고 접근 권한을 부여함.
- 권한 부여와 권한은 동일하지 않음. 권한은 특정 사용자에게 할당되지 않은 권리나 특권임.
- 권한 부여는 두 가지 의미를 가질 수 있음. 사용자가 특정 작업을 수행할 수 있는 권한을 부여하는 과정과 이를 확인하는 과정임.
- "access control"은 런타임 접근 제어를 의미할 수 있음. 애플리케이션이 사용자 인증 후 수행하는 작업임.
- "authN"과 "authZ"는 충분히 적절하고 잘 이해됨. 권한 부여는 항상 권한과 사용자의 연결과 관련됨.