Microsoft MVP성태의 닷넷 이야기
Team Foundation Server: 16. 팀 프로젝트 읽기 전용 사용자 등록 [링크 복사], [링크+제목 복사],
조회: 24220
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

팀 프로젝트 읽기 전용 사용자 등록


물론, 이 단계 이전에 TFS 설치나 Team Project 만드는 방법 등이 선행되어야 하겠지만, 그 부분은 이미 TFS를 조금이라도 다루실 줄 아는 분들이라면 모두 아실 것이기 때문에 굳이 언급하지 않겠습니다. (아니면, 나중에 필요하면 언급하겠습니다.)

대신, 이번에는 "개발자" 환경 설정이라기 보다는, "프로젝트"를 살펴볼 수 있는 권한만을 가진 사용자를 위한 설정을 해보겠습니다.

단계는 크게 다음과 같은 설정으로 나뉠 수 있습니다.

  1. 새로운 사용자 계정을 TFS 보안 그룹에 추가
  2. 해당 사용자에 대한 팀 프로젝트 단위의 보안 설정
  3. 해당 사용자에 대한 버전 컨트롤의 보안 설정
  4. 해당 사용자에 대한 Area 보안 설정
  5. 해당 사용자에 대한 WSS 사이트 보안 설정
  6. 해당 사용자에 대한 Report Server 보안 설정

그럼, 단계별로 하나씩 알아보겠습니다.



1. 새로운 사용자 계정을 TFS 보안 그룹에 추가
VS.NET 2005를 실행시키고, "Team" / "Team Foundation Server Settings" - "Group Membership..." 메뉴를 선택합니다. 여기서는 Workgroup 버전으로 예를 들것이므로, "Team Foundation Licensed Users" 그룹에 원하는 사용자를 추가해야 합니다. (물론, 사용자가 아닌 그룹 단위로 설정하는 것이 권장되어집니다.)

howto_connect_to_tfs_9.png

위의 그림에서 "Properties..." 버튼을 누른 후 나오는 대화창에서 "Windows User or Group"을 선택하고 "Add..." 버튼을 누르면 다음과 같이 사용자를 선택할 수 있는 대화창이 나옵니다.

howto_connect_to_tfs_10.png

적절한 계정을 입력하고 확인을 눌러주면, 해당 사용자는 TFS에 정상적으로 접속이 가능합니다.




2. 해당 사용자에 대한 팀 프로젝트 단위의 보안 설정
TFS 접근 권한을 가진 사용자는 이제, 특정 "Team Project"에 대해서도 접근할 수 있도록 설정되어져야 합니다. 이를 위해서 "Team" / "Team Project Settings" - "Group Membership..." 메뉴를 선택합니다. 그러면 다음과 같은 대화창을 볼 수 있습니다.

howto_connect_to_tfs_11.png

여기서는 특정 사용자에 대해 프로젝트의 "읽기 권한"만을 줄 것이기 때문에 "Readers"를 선택하고, "Properties..." 버튼을 눌러줍니다. 그러면 아래와 같은 대화창이 나오게 되고, "Add Member"의 유형을 "Windows User or Group"으로 선택 후 "Add..." 버튼을 누르고 원하는 Windows 사용자 계정 또는 그룹을 선택해 줍니다. (물론, 이 단계에서 기존 TFS 그룹에 사용자를 포함시키지 않고 별도의 새로운 TFS 사용자 그룹을 만들어서 포함시켜 줄 수도 있습니다.)

howto_connect_to_tfs_12.png




3. 해당 사용자에 대한 버전 컨트롤의 보안 설정
만약, 해당 사용자를 TFS에 미리 정의된 "Readers" 그룹에 포함시켰다면 이 과정은 필요가 없습니다. 하지만, "사용자 정의 TFS 그룹"을 만들어서 윈도우즈 계정을 포함시킨 경우라면 이 단계에서 해당 "사용자 정의 TFS 그룹"에 대해서도 버전 컨트롤 보안 설정을 해줘야 합니다.



소스 코드를 열람하기 위해서는 Team Project와는 별도로 "소스 컨트롤"에 대해서도 보안 설정을 해줘야 합니다. 이를 위해서는 "Source Control Explorer"에서 해당 소스 컨트롤의 노드를 오른쪽 마우스 버튼으로 클릭해서 나오는 메뉴의 "Properties..."를 선택합니다. 그러면 대화창이 뜨게 되고, "Security" 탭을 누르면 다음과 같은 화면이 보입니다.

howto_connect_to_tfs_13.png

"읽기 권한"을 주게 될 계정 또는 그룹을 입력하고 "Permission"에는 "Read"만을 허용한 상태에서 확인을 눌러줍니다.




4. 해당 사용자에 대한 Area 보안 설정
이번 과정 역시 버전 컨트롤 설정과 마찬가지로 해당 사용자를 TFS에 미리 정의된 "Readers" 그룹에 포함시켰다면 이 과정은 필요가 없습니다.



"작업 항목"에 대한 열람 권한을 주기 위해서는 "Area" 영역에 대해 보안 권한을 주어야 합니다. 이를 위해서 "Team" / "Team Project Settings" - "Areas and Iterations..." 메뉴를 선택하여 다음과 같은 대화창을 실행합니다.

howto_connect_to_tfs_14.png

대화창의 우측 하단에 보이는 "Security..." 버튼을 누르면 다음과 같이 보안 설정을 하는 대화창이 뜨게 됩니다.

howto_connect_to_tfs_15.png

만약 WorkItem을 추가하고 싶은 경우라면, 위에서 "Edit work items in this node"를 선택해 줘야 합니다.




5. 해당 사용자에 대한 WSS 사이트 보안 설정
TFS와는 별도로, WSS 웹 사이트의 보안 설정을 해줘야 합니다. 사실, TFS 그룹조차도 연동이 안되는 것 같은데요. 일례로, TFS에서 새로운 사용자 그룹을 추가해도 WSS 웹 사이트에는 보이지 않습니다. (개인적으로, 이 부분이 참 아쉬운 부분 같습니다.)

일단, 보안 설정을 위해서는 해당 Team Project와 연결된 포탈 사이트로 접속을 해야 합니다. 이를 위해서는 "Team" / "Show Project Portal..." 메뉴를 선택합니다. 그런 후에는 "/sites/[TeamProject 이름]/_layouts/1033/webadmin.aspx" 사이트로 접속을 하면 사용자/그룹을 추가/생성/삭제할 수 있는 웹 페이지가 나옵니다.

howto_connect_to_tfs_16.png

여기서 "Manage users" 링크를 선택하고 이후 나타나는 화면에서 지시하는 데로 사용자를 추가해 주면 됩니다. 보통 읽기를 목적으로 하는 경우 "Readers" 그룹에 포함시켜주면 되지만, 만약 사용자 정의 TFS 그룹을 만들었다면 "Manage users"를 선택하기 이전에 "Manage site groups"를 선택해서 비슷한 역할의 그룹을 만들어서 사용자 추가를 해줄 수도 있습니다.




6. 해당 사용자에 대한 Report Server 보안 설정
마지막 단계로, "Report Server"에 대한 보안 설정이 남았습니다. 역시 이것도 TFS 그룹과는 아무런 관련이 없으며 Windows 사용자 계정에 의한 설정으로 직접 "Reports" 서비스로부터 제공되는 웹 사이트에 접속해서 보안 설정을 해줘야 합니다.

TFS의 AppTier 측 서버에 로그온 한 후, 웹 브라우저를 이용하여 "http://127.0.0.1/Reports/"로 접속하면, 화면에 현재 TFS에 등록된 프로젝트들이 나열되게 됩니다. 이때 원하는 Team Project를 선택하고 들어가면 아래와 같은 화면으로 바뀌게 됩니다.

howto_connect_to_tfs_17.png

"속성" 탭을 선택하면 "일반", "보안" 메뉴가 나오게 되는데, 이 중에서 "보안" 탭을 선택해주면 다음과 같은 화면으로 바뀌게 됩니다.

howto_connect_to_tfs_18.png

이제, "항목 보안 편집" 메뉴를 선택하면 "새 역할 할당" 버튼이 다시 나타나게 됩니다. 다시 "새 역할 할당" 버튼을 선택해 주면 최종적으로 윈도우즈 사용자 그룹 또는 계정에 대해 Report Services에 대한 권한을 할당해주는 화면이 나옵니다.

howto_connect_to_tfs_19.png

위와 같이 적절한 권한을 주고 확인 버튼을 눌러주면 모든 것이 완료됩니다. 이제 해당 사용자 계정으로 TFS 서버의 Team Project에 접속하게 되면 아래와 같은 식의 화면이 나오게 됩니다.

howto_connect_to_tfs_8_ok.png

반면에 아래에서 보는 것처럼 폴더 아이콘에 빨간색의 "X" 마크가 있으면, 지금까지의 과정에서 해당 작업에 대한 설정에 오류가 있음을 나타냅니다.

howto_connect_to_tfs_8_error.png




[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/23/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 106  107  108  109  [110]  111  112  113  114  115  116  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11174정성태4/3/201719401VC++: 116. Visual Studio 단위 테스트 - Failed to set up the execution context to run the test
11173정성태4/3/201722967VC++: 115. Visual Studio에서 C++ DLL을 대상으로 단위 테스트할 때 비정상 종료한다면?파일 다운로드1
11172정성태4/3/201722101.NET Framework: 651. C# - 특정 EXE 프로세스를 종료시킨 EXE를 찾아내는 방법파일 다운로드1
11171정성태3/31/201718807VS.NET IDE: 114. Visual Studio 디버깅 경고 창 - You are debugging a Release build of ...
11170정성태3/31/201720706.NET Framework: 650. C# - CachedAnonymousMethodDelegate 유형의 코드 생성
11169정성태3/30/201720553VC++: 114. C++ vtable의 가상 함수 호출 가로채기파일 다운로드1
11168정성태3/29/201723886VC++: 113. C++ 클래스 상속 관계의 vtable 생성 과정
11167정성태3/28/201724187VC++: 112. C++의 가상 함수 테이블 (vtable)은 언제 생성될까요? [2]
11166정성태3/28/201718431오류 유형: 382. System.Data.SqlClient.SqlException - Arithmetic overflow error converting IDENTITY to data type int.
11165정성태3/27/201721705오류 유형: 381. Visual C++에서 min, max 함수를 사용한 경우 C2589, C2059 컴파일 오류 발생
11164정성태3/27/201730029VC++: 111. C++ 클래스의 상속에 따른 메모리 구조 [2]파일 다운로드1
11163정성태3/25/201719811VC++: 110. CreateThread Win32 API에 C++ 클래스의 멤버 함수를 전달하는 방법파일 다운로드1
11162정성태3/24/201724045오류 유형: 380. Visual Studio 빌드 실패 - The OutputPath property is not set for project
11161정성태3/24/201716767오류 유형: 379. ICOMAdminCatalog.GetCollection 호출 시 0x80070422 예외 발생
11160정성태3/23/201721689.NET Framework: 649. ASP.NET - Server cannot append header after HTTP headers have been sent. (HTTP 헤더를 보낸 후에는 서버에서 헤더를 추가할 수 없습니다.)파일 다운로드1
11159정성태3/23/201718973Windows: 136. Memory-mapped File은 Private Bytes 크기에 포함될까요?파일 다운로드1
11158정성태3/22/201718620디버깅 기술: 85. Windbg - SOS 디버깅 사례 System.NullReferenceException 예외 추적
11157정성태3/22/201721863.NET Framework: 648. Dictionary<TKey, TValue>를 deep copy하는 방법파일 다운로드1
11156정성태3/21/201722491.NET Framework: 647. 닷넷(C#) 코드로 인증서 요청 코드 만드는 방법파일 다운로드1
11155정성태3/21/201722696.NET Framework: 646. SslStream의 CipherAlgorithm 선택이 가능할까요?파일 다운로드1
11154정성태3/5/201729699VC++: 109. DLL에서 STL 객체를 인자/반환값으로 갖는 함수를 제공할 때, 그 함수를 외부에서 사용하는 경우 비정상 종료한다면? [2]파일 다운로드1
11153정성태3/5/201729078VC++: 108. DLL에 정의된 C++ template 클래스의 복사 생성자 문제파일 다운로드1
11152정성태3/4/201722756VC++: 107. VirtualAlloc, HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new의 차이점파일 다운로드1
11151정성태3/3/201723341VC++: 106. DLL 개발자가 주의해야 할 Secure CRT 함수 사용 [1]파일 다운로드1
11150정성태2/21/201719289.NET Framework: 645. Visual Studio Fakes 기능에서 Shim... 클래스가 생성되지 않는 경우 [5]
11149정성태2/21/201722965오류 유형: 378. A 64-bit test cannot run in a 32-bit process. Specify platform as X64 to force test run in X64 mode on X64 machine.
... 106  107  108  109  [110]  111  112  113  114  115  116  117  118  119  120  ...