Office 365의 OneDrive for Business(이하 OneDrive)는 SharePoint Online을 기반으로 하고 있는 개인용 클라우드 저장소입니다. 기업에서는 보안상의 이유로 사용자들이 OneDrive를 사용하지 않는 정책을 세우기도 합니다. 예전(언제인지 정확히 모름)에는 Office 365 관리센터에 있는 사용자 관리에서 라이선스 세부 정보에서 OneDrive만 Disable하면 간단히 되었던 것으로 기억합니다만, 최근에 확인해보니 관리센터 사용자 설정 UI에서 OneDrive가 빠져있습니다.

그렇다면 어디에서 OneDrive를 사용하거나 사용하지 못하도록 설정해야 하는 것일까요? SharePoint Online을 Disable(Office 365 관리센터에 사용자 라이선스 설정, Office Online도 Disable 해야 함)하거나 Office Portal에서 OneDrive 타일을 보이지 않도록(SharePoint 관리센터에 설정) 한다 하더라도 OneDrive 서비스 자체를 사용하지 못하게 하는 것이 아니기 때문에 OneDrive를 로컬드라이브와 동기화 한다거나 웹브라우저로 OneDrive에 접속(https://Tenant-my.sharepoint.com/personal/userUPN_Tenant_onmicrosoft_com/_layouts/15/onedrive.aspx)하면 별다른 제약없이 OneDrive를 사용할 수 있습니다. SharePoint Online 서비스를 막고 Office Online 서비스를 막는 등 초가삼간을 태웠지만 빈대(?)는 여전히 살아있습니다. :)

우선 기본적으로 아무 설정도 바꾸지 않는다면 OneDrive는 사용할 수 있도록 설정되어 있습니다. 이 글에서는 보안이나 기타의 사유로 사용자가 OneDrive를 사용하지 못하도록 하는 두 가지 방법을 설명합니다. 

첫 번째로 Office 365 Tenant를 처음 열었을때, 즉 OneDrive가 활성화되지 않은 상태일 때 유효한 방법입니다. 만약 이미 사용자가 OneDrive를 활성화 했다면 두번째 소개하는 방법을 사용하기 바랍니다. 
우선 SharePoint 관리센터의 사용자 프로필에서 사용자 권한 관리로 이동합니다. '클래식 SharePoint 관리 센터 > 사용자 프로필 > 사용자 권한 관리'

사용자 프로필에 사용자 권한 관리 선택

'외부 사용자를 제외한 모든 사람'의 권한 '개인 사이트 만들기' 권한을 통해 사용자는 OneDrive 문서 라이브러리를 만들 수 있으며, 해당 권한을 해제 하면 사용자의 OneDrive 액세스가 해제되어 OneDrive를 사용할 수 없습니다(권한 해제 후 OneDrive를 선택하거나 접속해도 MyDelve로 이동합니다).

개인 사이트 만들기 권한을 해제

이 설정은 외부 사용자를 제외한 모든 사용자에 적용되므로 특정 사용자만 OneDrive 사용을 허용하거나 해제 하려면 Office 365 관리센터에서 보안 그룹을 만들어 보안 그룹에 권한을 설정하면 됩니다. 이렇게 하면 해당 보안 그룹에 소속된 사용자만 OneDrive를 사용하거나 사용하지 못하도록 설정할 수 있습니다(예 personalDriveGroup).

보안 그룹을 검색하여 추가
보안 그룹의 사용 권한 확인

두 번째로 SharePoint 개인 사이트에 대한 사용권한을 개인별로 제거하는 방법입니다. 이 방법은 앞서 첫번째에서 설명한 개인 사이트 생성 권한을 제거해도 사용자가 이미 OneDrive를 활성화 했다면 계속 액세스 할 수 있었던것과 달리 사용권한 제거는 OneDrive 활성화와 상관없이 적용할 수 있습니다.
SharePoint 관리센터의 사용자 프로필에서 사용자 프로필 관리로 이동합니다. '클래식 SharePoint 관리 센터 > 사용자 프로필 > 사용자 프로필 관리'

사용자 프로필에 사용자 프로필 관리 선택

사이트 권한을 제거하고자 하는 사용자를 검색하여 프로필을 찾습니다. 검색결과 위에서 마우스 오른쪽 버튼을 클릭하여 '사이트 모음 소유자 관리'를 선택합니다. 사이트 모음 소유자에 해당 사용자가 권한이 있는지 확인 후 현재의 사용자가 아닌 특정 사용자(관리자)로 권한 변경합니다.

프로필 검색 결과에서 마우스 오른쪽 버튼을 선택
현재 권한 소유자 표시
사이트 모음 소유자를 admin으로 변경

권한 변경 후 OneDrive에 접속하면 다음과 같이 접근 거부 화면이 표시되고 OneDrive Sync시에도 연결에 문제가 발생했다는 메시지가 표시됩니다.

웹브라우저에서 직접 OneDrive 접속
OneDrive 동기화 실패

추가로 PowerShell을 사용하여 사용권한을 제거(Owner 변경)를 할 수 있습니다. 스크립트 중에 Tenant는 각자의 테넌트로 치환하여 사용하기 바랍니다.
우선 SharePoint Online에 접속합니다.

# SharePoint Online Connection
$adminUPN="admin@Tenant.onmicrosoft.com"
$orgName="Tenant"
$userCredential = Get-Credential -UserName $adminUPN -Message "Type the password."
Connect-SPOService -Url https://$orgName-admin.sharepoint.com -Credential $userCredential

특정 사용자(Debrab)의 개인 사이트(OneDrive)를 찾아 Owner를 관리자(admin)으로 변경합니다.

# userUPN의 Owner를 admin으로 변경
$userUPN = "debrab@Tenant.onmicrosoft.com"
$userPersonalSite = Get-SPOSIte -IncludePersonalSite $true -Limit All | Where-Object {$_.Owner -eq $userUPN} | select Url

# 권한 제거(변경)
Set-SPOSite -Identity $userPersonalSite.Url -Owner $adminUPN -NoWait

# 접속 종료
Disconnect-SPOService

이 스크립트를 응용하여 csv에서 사용권한 제거대상 사용자를 읽어서 Owner를 관리자로 제거하는 스크립트를 작성하면 한 번에 OneDrive 접근하지 못하도록 설정할 수 있습니다.

※ 참고 사이트
http://jerryitguy.com/index.php/2017/12/05/disable-onedrive-business-office-365/

 

Disable OneDrive for Business in Office 365 - Jerry Lowe

When performing Office 365 migrations for clients, the topic of disabling OneDrive for Business and/or SharePoint Online often comes up. The reasons for someone wanting to do this vary but are usually of the variety of needing more control over what the us

jerryitguy.com

 

※ 추가 내용입니다. - 2019-07-01
- 현재 MS에서 제공하는 공식 설정 기능이나 문서에 Office 365에서 OneDrive를 사용하지 못하도록 하는 방법은 없음.
- 즉 위에서 소개한 방법은 일종의 Work Around 입니다. 댓글에 쓴데로 Teams에서 채팅(1:1 또는 1:다)을 하면 설정한 것들이 모두 무용지물이 됩니다.
- 현재로서는 원초적인 방법이지만 IP를 이용하여 OneDrive 사용을 막는 방안이 있기는 합니다.
   1. OneDrive의 관리센터에서 특정 IP만 OneDrive에 접근할 수 있도록 설정하기
      - 아무도 사용하지 않을 IP를 접근허용 IP로 지정하면 사용자들이 접근할 수 없는 효과를 줄 수 있습니다.
      - 주의할 점은 반드시 관리자용 PC에 할당된 공인IP도 설정해야 합니다. 그렇지 않으면 곤란한 상황이 발생하겠죠?

Office 365 관리 센터 > 관리 센터 > OneDrive 선택


   2. 회사 네트워크의 방화벽에 OneDrive Url 및 IP를 등록하여 접근을 막는 방법입니다.
      - office 365 url 및 IP 주소 범위 

Powershell을 이용한 Office 365 사용자 관리 마지막편입니다. 마지막편은 사용자의 상태 정보, 비밀번호 초기화, 라이선스 등 변경과 사용자를 삭제하고 복구하는 방법을 알아보겠습니다.

사용자 상태, 속성정보 변경

어떤 사용자가 휴직하거나 퇴사하면 회사마다 정책이 다르겠지만 일단 Office 365에 로그인해서는 안되는 것으로 가정합니다. 로그인하지 못하게 하는 방법은 비밀번호를 변경하거나 사용자 계정을 막는(block) 방법이 있습니다. 또 단순(?)하게 사용자 계정을 삭제하면 됩니다(휴직은 삭제하면 안되겠네요). 삭제는 운영 정책상 얼마의 시간이 지난 후에 할 수도 있으므로 삭제보다는 로그인 하지 못하도록 비밀번호를 변경하거나 로그인을 막는 방법을 알아보겠습니다.

# 사용자의 비밀번호를 임의의 값 생성으로 변경(새 비밀번호를 지정하지 않거나 비밀번호 값을 비워두면 됩니다)
Set-msoluserPassword -UserPrincipalName "dan@kspark004.onmicrosoft.com"
Set-msoluserPassword -UserPrincipalName "dan@kspark004.onmicrosoft.com" -NewPassword ""

# 사용자의 비밀번호를 특정 값으로 변경하고 로그인 시 강제로 변경하도록 함
Set-msoluserPassword -UserPrincipalName "dan@kspark004.onmicrosoft.com" -ForceChangePassword $true -NewPassword "P@ssWORD"

비밀번호 변경은 비밀번호를 잊어버려서 변경요청한 사용자에 처리에도 요긴하게 사용할 수 있습니다. 임의의 값으로 비밀번호를 변경할때 강제로 비밀번호를 변경하도록 합니다. 해당 사용자는 새 비밀번호로 로그인 후 자신만의 비밀번호로 다시 변경합니다(Office 365 관리포털에서 사용자 스스로 비밀번호를 변경할 수 있는 전역설정을 하지 않았을 경우로 가정).

또 사용자를 Office 365에 로그인하지 못하게 하는 다른 방법은 사용자의 계정을 막는(block) 것입니다. 막힌 계정으로 로그인 했을 경우 아래 그림과 같은 에러 메시지가 나오고 로그인되지 않습니다.

# 사용자가 로그인을 못하도록 상태 변경하기
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -BlockCredential $true

# 로그인 할 수 있도록 다시 상태 변경하기
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -BlockCredential $false 


Office 365에서 사용자는 얼마든지 생성할 수 있으나 라이선스를 부여하지 않으면 Office 365의 기능을 사용할 수 없습니다. 이 번에는 Office 365에서 라이선스를 부여하거나 제거하는 방법을 알아보겠습니다.

# 라이선스 부여 (라이선스 할당을 위해 UsageLocation은 미리 설정되어 있어야 함)
Set-MsolUserLicense -UserPrincipalName "dan@kspark004.onmicrosoft.com" -AddLicenses "kspark004:ENTERPRISEPREMIUM"

# UsageLocation이 설정되어 있지 않다면 라이선스가 할당되지 않고 오류가 발생합니다. 아래와 같이 UsageLocation을 설정합니다
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -UsageLocation "KR"

# 라이선스 설정값은 Powershell 2편에서 설명하였습니다. (E3라이선스-xxx:ENTERPRISEPACK, E5라이선스-xxx:ENTERPRISEPREMIUM, ProPlus-xxx:OFFICESUBSCRIPTION)

# 라이선스 제거
Set-MsolUserLicense -UserPrincipalName "dan@kspark004.onmicrosoft.com" -RemoveLicenses "kspark004:ENTERPRISEPREMIUM"

# 조회하여 라이선스 제거 (부서가 '대한민국'에서 라이선스가 있는 사람만 제거)
$EtcUser = Get-MsolUser -All -Department "대한민국" | where {$_.isLicensed -eq $true}; $EtcUser | foreach { Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses "kspark004:ENTERPRISEPREMIUM" }

사용자의 부서와 직급을 변경해 보겠습니다. 변경할 사용자가 한 두명일 경우 관리포털에서 하는 것이 더 편하고 빠릅니다. Powershell을 사용하는 이유는 변경해야할 사용자가 많은 경우 적합합니다.

<# 변경 가능한 사용자 정보 속성 (이외에도 더 있습니다)
-FirstName(이름, First Name) -LastName(성, Last Name) -DisplayName(표시 이름, Display Name) -Title(직함, Job Title) -Department(부서명, Department) -Office(사무실 번호, Office Number) -PhoneNumber(사무실 전화, Office Phone) -MobilePhone(휴대폰, Mobile Phone) -Fax(팩스 번호, Fax) -StreetAddress(주소, Address) -City(구/군/시, City) -State(시/도, State or Province) -PostalCode(우편 번호, ZIP or Postal Code) -Country(국가 또는 지역, Country or Region) -UsageLocation(서비스국가코드, UsageLocation) -BlockCredential(로그인상태(차단/허용), BlockCredential)
#>

# 특정 사용자의 부서와 직급 변경
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -Department "대한민국만세" -Title "과장"

# 변경해야할 사용자가 많다면 일괄등록과 동일한 방법으로 일괄 변경도 가능합니다
Import-Csv -Path "C:\Update_User_ko.csv" | foreach { Set-msoluser -UserPrincipalName $_.UserPrincipalName -Department $_.Department -Title $_.Title } 


사용자 삭제

Office 365의 사용자는 삭제할 수 있습니다. 실제로는 삭제하지 않고 휴지통으로 옮깁니다. 사용자 삭제 시 라이선스도 동시에 제거됩니다. 사용자가 삭제된 일자로 부터 기본 30일 이내에는 복구(휴지통에서)가 가능하며 복구 시 라이선스 등의 정보도 삭제 전과 동일하게 복구됩니다. 삭제할 사용자가 한 두명일 경우 관리포털에서 삭제하는 것이 더 편하지만 일괄 작업이 필요할 경우 Powershell 이 빠릅니다.

# 사용자 삭제 (기본 30일 이내에 복구할 수 있음)
Remove-MsolUser -UserPrincipalName "dan@kspark004.onmicrosoft.com"


# 사용자 복구 (복구되면 할당되었던 라이선스 등의 정보가 그대로 복구됨)
Restore-MsolUser -UserPrincipalName "dan@kspark004.onmicrosoft.com"


# 사용자 영구 삭제 (사용자를 삭제한 후 RemoveFromRecycleBin 옵션을 사용하면 영구삭제되며 복구가 불가능함)
Remove-MsolUser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -RemoveFromRecycleBin


# 사용자 일괄 삭제 (파일목록에 있는 사용자를 삭제함. Force 옵션은 삭제확인 없이 바로 삭제)
Import-Csv -Path "c:\Delete_User.csv" | foreach { Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force }


# 사용자 일괄 삭제 (부서로 조회하여)
$EtcUser = Get-MsolUser -All -Department "대한민국"; $EtcUser | foreach { Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force } 

아래는 silee@kspark004.onmicrosoft.com 사용자를 삭제하고 복구하는 예제입니다. 사용자 삭제 전에는 라이선스 부여 개수가 5개였는데 삭제 후 4개로 줄어듭니다. 사용자를 복구한 뒤에는 별도로 라이선스를 부여하지 않았는데도 라이선스 부여 개수가 5개로 늘어나 있습니다.

이제 휴지통에 있는 사용자를 영구 삭제 후 다시 복구하는 예제입니다. 물론 영구 삭제 후에는 복구가 불가능합니다.

Powershell을 사용하지 않고 관리포탈에서만 작업했다가 낭패를 봤던게 3~4개월 전 봄인데 벌써 여름이네요. 다시 한 번 말하지만 Powershell을 사용하여 사용자를 관리하는 것이 무조건 편하지는 않습니다. 위에서 언급했듯이 적은 수의 사용자 관리는 관리포탈에서 작업하는 것이 직관적이고 쉽지만 대량의 사용자를 관리할 때는 정확하고 빠르게 작업할 수 있는 Powershell의 장점을 느낄 수 있을 것입니다.

이제 4편을 마지막으로 Powershell을 사용하여 Office 365 사용자를 관리하는 글은 마무리합니다. 업데이트 되거나 변경, 추가로 공유할 내용이 있으면 번외편으로 새 글을 추가할 생각입니다.

※ 참고 사이트 - 이 작업을 3~4개월 전에 했는데 참고했던 문서를 찾아보니 대부분 변경되었더군요. 기억을 더듬어 최대한 비슷한 문서를 연결합니다











Powershell을 이용한 Office 365 관리 세번째로 사용자 조회와 등록을 중점적으로 다루겠습니다. 사용자 조회와 등록은 2가지 명령어(Get-MsolUser, New-MsolUser)를 사용하며 상세한 옵션은 글하단 참조 사이트를 방문하시면 상세한 정보를 확인하실 수 있습니다.

사용자 조회

사용자 조회는 기본적으로 Get-MsolUser 명령어를 사용합니다. -All 옵션은 넣지 않아도 결과는 동일합니다.

# 사용자 조회
Get-MsolUser

# 모든 사용자 조회 -All 옵션
Get-MsolUser -All 

사용자 조회


특정 사용자 및 특정 속성 조회

# 특정 사용자 조회
Get-MsolUser -UserPrincipalName "silee@kspark004.onmicrosoft.com"

# 특정 사용자의 특정 속성 정보 조회 (pipe('|')를 사용하여 두가지 명령을 한 줄에 사용할 수 있습니다) 
Get-MsolUser -UserPrincipalName "silee@kspark004.onmicrosoft.com" | Select UserPrincipalName, DisplayName, Title, Department

# 특정 사용자의 모든 속성 정보 조회 (sql 조회문과 비슷하여 모든 속성정보가 표시됩니다)
Get-MsolUser -UserPrincipalName "silee@kspark004.onmicrosoft.com" | Select *

사용자 특정 속성 조회


특정 조건으로 조회 (4개의 명령어 조회 결과는 모두 동일합니다)

# 부서명이 "정보 기술"인 모든 사용자 조회
Get-MsolUser -All -Department "정보 기술"

# 부서명이 "정보 기술"인 모든 사용자 조회 (위 명령어와 다른 점은 부서가 '정보 기술'과 같지 않은 건도 조회 가능)
Get-MsolUser -All | where {$_.Department -eq "정보 기술"};

# 부서명이 "정보 기술"인 사용자 중에서 라이선스가 발급된 사용자 조회
Get-MsolUser -All -Department "정보 기술" | where {$_.isLicensed -eq $true};

# 변수를 사용하여 부서명이 "정보 기술"인 사용자 중에서 라이선스가 발급된 사용자 조회
$DeptUser = Get-MsolUser -All -Department "정보 기술"; $DeptUser | where {$_.isLicensed -eq $true};

* 참고 : Where-Object {$_.[user account property name] [comparison operator] [value]}
comparison operator : -eq (같다), -ne (같지않다), -lt (보다 작다), -gt (보다 크다) 등이 있습니다.
value : 보통 문자열(문자, 숫자 또는 기타 문자열)이 사용하지만 숫자값이나 $Null 등 의 값이 사용될 수 있습니다.

사용자 조회 조건


사용자 등록

사용자 등록은 New-MsolUser 를 사용합니다. 한 두명의 사용자 등록은 관리포털을 사용하는 것이 더 빠를 수도 있으나, 정형화된 작업이 많은 경우 Powershell을 사용하는 것이 편리할 때도 있습니다. 단 별도 옵션을 지정하지 않으면 사용자의 비밀번호는 시스템에서 자동으로 생성하여 반환하고, 라이선스는 미할당 상태로 사용자가 생성됩니다.

새 사용자 등록 시 추가 속성으로 -Password 를 사용하면 관리자가 특정 비밀번호를 지정할 수 있고 -ForceChangePassword 를 $true로 설정하면 사용자는 관리자가 지정한 비밀번호로 로그인하고 로그인 후 반드시 사용자가 비밀번호로 변경하도록 할 수 있습니다. 또 -LicenseAssignment는 생성과 함께 생성되는 사용자에게 지정하는 라이선스를 부여할 수 있습니다.

라이선스 지정에 사용되는 값은 Powershell 2편을 참조하시거나 2편에 소개된 라이선스 외의 값은 Google 검색을 하시면 쉽게 찾을 수 있습니다.

# 새 사용자 등록 - UserPrincipalName은 필수이며 도메인 값이 현재의 테넌트(kspark004.onmicrosoft.com)나 커스텀 도메인과 일치해야 합니다
New-MsolUser -UserPrincipalName "spark@kspark004.onmicrosoft.com" -FirstName "기석" -LastName "박" -DisplayName "박기석" -Title "과장" -Department "연구소" -Office "1111" -PhoneNumber "02-0000-6186" -MobilePhone "010-0000-9545" -Fax "02-0000-6004" -StreetAddress "강남구 삼성로 29길" -City "서울특별시" -State "" -PostalCode "135-879" -Country "대한민국"

# 새 사용자 등록 시 추가 속성 - 지역설정(필수), 라이선스 할당, 비밀번호 설정, 강제 비밀번호 변경 (UsageLocation(라이선스할당을 위한 필수), LicenseAssignment, Password, ForceChangePassword)
New-MsolUser -UserPrincipalName "spark2@kspark004.onmicrosoft.com" -FirstName "기석2" -LastName "박" -DisplayName "박기석2" -Title "과장" -Department "연구소" -Office "1111" -PhoneNumber "02-0000-6186" -MobilePhone "010-0000-9545" -Fax "02-0000-6004" -StreetAddress "강남구 삼성로 29길" -City "서울특별시" -State "" -PostalCode "135-879" -Country "대한민국" -UsageLocation "KR" -LicenseAssignment "kspark004:ENTERPRISEPREMIUM" -Password "P@ssW0rd!" -ForceChangePassword $true

사용자 등록


이 글에서 다룬 내용은 제가 주로 사용하고 참고할만 하다고 생각했던 것만 갈무리하여 설명하였습니다. 지금까지 기술한 내용 외에 더 많은 사용자 조회 및 등록의 옵션과 예제를 원하시면 아래 참고 사이트에 방문해 보시기 바랍니다. 


※ 참고 사이트


이번 글은 Powershell을 이용한 Office 365 관리 두번째로 사용자 관리, 특히 사용자 일괄등록을 중점적으로 다루고자 합니다.

일반적인 사용자 관리는 Office 365 관리포털(Web) 사용을 권장합니다. Office 365 관리포털(이하 관리포털)의 사용자 관리 기능은 초기 버전에 비해 더욱 편하게 개선되었으며 csv 파일을 이용하여 사용자 일괄등록을 지원합니다. 그렇다면 관리포털을 두고 왜 Powershell을 이용하여 사용자 관리를 하는 것일까요? 결과로 볼때 동일한 작업이지만 차이는 효율성이라고 할 수 있습니다. 사용자 관리에 관리포털을 이용하는 경우는 '비교적 적은 수의 사용자 관리'이고 Powershell을 이용하여 사용자를 관리하는 경우는 비교적 많은 사용자, '100여명 또는 200여명 이상의 사용자 관리'입니다. 사용자 수에 따라 일괄등록, 수정 시 관리포털에는 제약사항이 있습니다. 

관리포털의 제약사항
단순히 사용자가 많으면 Powershell을 사용해야 한다? 오해하실 수도 있습니다만 우선 관리포털의 제약사항을 살펴보겠습니다.

  1. 사용자 일괄등록 시 한 번에 200명 제한
    관리포털을 사용하여 사용자를 일괄등록 할 때 한 번에 입력할 수 있는 사용자가 200명으로 제한되어 있습니다. 만약 500여명의 사용자를 등록해야 한다면 사용자들을 3번으로 나눠서 등록해야 합니다. 
  2. 사용자 정보 변경 시 한 번에 100명 제한
    사용자 일괄등록 후 사용자의 정보(라이선스 부여, 로그인 허용 여부, 비밀번호 재설정 등)를 한 번에 여러 사용자를 선택하여 변경해야 할 일이 있습니다. 동일한 정보로 변경할 경우 여러 사용자를 한 번에 선택하여 변경하고 싶을 텐데, 이러한 경우 한 번에 변경할 수 있는 사용자가 100명으로 제한되어 있습니다. 만약 500여명의 사용자에 일괄로 E3 라이선스를 부여하고 싶으면 100명씩 5번에 나눠서 변경해야 합니다.
  3. 속도와 정합성 보장
    관리포털에서 200여명의 사용자를 등록하거나 100여명의 사용자 정보를 한 번에 변경하면 예상외로 속도가 느립니다. 또 중간에 에러메시지가 표시되어도 사용자는 등록됩니다. 또 사용자 정보가 잘 변경된것 같지만 어떤 사용자는 정상적으로 변경된듯 한데 또 다른 사용자는 제대로 변경되지 않은 듯 합니다. 뭔가 불확실하고 화장실 갔다 휴지가 없어 그냥 나온듯 한 느낌이라고 할까요?(정합성 보장은 개인적인 경험으로 다른 분들은 다를 수도 있습니다)

Powershell 사용의 장점
관리포털의 사용자 관리가 관리에 부적합하다는 것은 아닙니다. 다만 사용자 수에 따른 관리 도구의 선택이 필요하다는 의미입니다. 즉 적은 수의 사용자 등록 또는 정보 변경은 관리포털을 이용하면 간편하고, 많은 사용자를 한 번에 등록하거나 변경 시에는 powershell을 사용하는 것이 좋습니다.
Powershell 사용 시 편리한 점은 사용자 등록 및 변경에 제한이 없으며 무엇보다 처리 속도가 관리포털에 비해 현저하게 빠릅니다(필자의 체감속도는 10배정도 되는 듯합니다).

Powershell을 사용하여 사용자 일괄등록
이제 본격적으로 Powershell을 사용하여 사용자 일괄등록을 설명하겠습니다. 작업하기 전에 Excel이 설치(csv 파일 수정에 text editor를 사용해도 가능 하지만 사용하기 불편합니다)되어 있으면 좋고, 1편에서 설명했던 Powershell 환경이 설정되어 있어야 합니다(Microsoft Azure Active Directory Module for Windows PowerShell 설치). 그리고 Office 365에 접속까지 성공했다면 이제 반이상 한거나 진배없습니다.

  1. 첫번째로 일괄등록 csv 파일을 생성합니다. 직접 만들어도 상관없지만 관리포털에서 sample 파일을 다운받아서 사용하는 것이 편리합니다. 저는 sample 파일을 다운받아 사용하겠습니다.
    - 관리포털에서 관리자 타일을 선택하면 Admin Center 화면이 보이고 왼쪽 메뉴에서 '사용자 > 활성사용자' 메뉴 선택 후 활성 사용자 화면에서 '더 보기' 버튼, '+여러 사용자 가져오기'를 선택하면 다음과 같은 화면이 보입니다.

  2. 여러 사용자 가져오기, 일괄등록

    - 화면에서 '헤더와 샘플 사용자 정보가 포함된 CSV 파일 다운로드'를 선택하여 헤더와 샘플 정보가 있는 Import_User_Sample_ko.csv 파일을 다운 받습니다. 관리포털을 이용하여 사용자 일괄등록을 할 경우, 이 파일을 작성하여 업로드 하면 됩니다. 그러나 우리는 Powershell을 이용할 것이기 때문에 샘플 파일만 다운 받습니다.


    관리포털,일괄등록, office 365

  3. 샘플 파일을 열어 등록하고자 하는 사용자 정보를 입력합니다. 다른 정보는 중복되어도 상관없지만 '사용자 이름' 즉 UserPrincipalName은 중복되면 안되며 현재 Office 365에서 사용하는 도메인으로 변경해 주어야 합니다.
    - 필자는 테스트용 계정이므로 UserPrincipalName의 도메인을 'kspark004.onmicrosoft.com'으로 변경해 주었습니다. 예를 들어 dongbuinc.co.kr 같은 커스텀 도메인으로 설정을 했으면 커스텀 도메인으로 변경하고 커스텀 도메인이 아직 없다면 일단 테넌트 등록 시 등록했던 기본 도메인 xxx.onmicrosoft.com 으로 등록하고 나중에 커스텀 도메인으로 변경해도 됩니다.
    - 한글로 설정된 관리포털에서 다운받은 샘플 파일은 헤더가 한글이지만 추후 사용자 조회 시 영어 속성으로 조회해야 하므로 저는 혼동을 피하고자 처음부터 헤더를 영어로 변경하였습니다. 한글 헤더로 작업해도 문제 없으며 powershell로 업로드 시 필드 지정만 한글로 변경해주면 됩니다.

  4. 샘플 파일


    - 샘플 파일을 변경 후 반드시 'UTF-8 지원 CSV 속성'을 선택 후 저장해야 합니다. 그렇지 않으면 한글로 입력한 정보들이 모두 깨져버립니다. 이러한 경우 보통 다른이름으로 저장 기능을 사용합니다.

     

    CSV, UTF-8, 한글깨짐


  5. 이제 사용자 일괄등록을 위한 준비 작업을 끝났습니다. Powershell로 Office 365에 접속하고 잘 연결되었는지 확인합니다.

  6. # Office 365 로그인을 위한 자격증명 등록
    $msolcred = get-credential -UserName "admin@kspark004.onmicrosoft.com" -Message "비번입력"

    # 자격증명을 이용하여 Office 365에 연결
    connect-msolservice -credential $msolcred

    # Office 365와 연결되었는지 확인 (현재 라이선스 종류와 현황)
    Get-MsolAccountSku

     
    - 아래 그림은 현재 테넌트에 부여된 라이선스 종류와 라이선스가 활성화된 사용자 수를 표시합니다. 라이선스 종류는 5번에서 설명합니다.


  7. Import-Csv 명령어를 사용하여 csv 파일에 있는 사용자를 일괄등록하며 필요에 따라 인수를 조절하여 입력을 원하는 정보를 변경할 수 있습니다(헤더가 한글일 경우 '$_.한글' 로 변경).
  8. # 사용자 일괄 등록
    Import-Csv -Path "C:\Import_User_Sample_ko.csv" | foreach { New-MsolUser -UserPrincipalName $_.UserPrincipalName -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.DisplayName -Title $_.Title -Department $_.Department -Office $_.Office -PhoneNumber $_.PhoneNumber -MobilePhone $_.MobilePhone -Fax $_.Fax -StreetAddress $_.StreetAddress -City $_.City -State $_.State -PostalCode $_.PostalCode -Country $_.Country }

    # 사용자 등록 결과를 Import_User_Sample_ko_rst.csv 파일로 Export
    <#
    Import-Csv -Path "C:\Import_User_Sample_ko.csv" | foreach { ~~~~~~ ... $_.Country } | Export-Csv -Path "C:\Import_User_Sample_ko_rst.csv"
    #>


    - 아래 그림은 일괄 등록 후 화면이며 사용자의 비밀번호는 임의로 생성되고 라이선스는 할당되지 않는 상태로 생성됩니다. 일괄 등록 시 'Export-csv' 명령어를 추가하면 사용자 등록 후 결과를 파일로 다운 받을 수도 있습니다. 관리포털의 경우 등록 결과를 관리자의 메일로 보낼 수 있습니다.

     

  9. 사용자는 임시로 생성된 비밀번호로 생성되어 로그인 가능하지만 라이선스가 할당되어 있지않아 Office 365를 사용할 수 없습니다. 관리자는 사용자 등록 후 별도의 작업으로 라이선스를 할당해야 합니다.
    - 사용자에게 Office 365 라이선스를 할당합니다. 라이선스 할당을 위해서는 UsageLocation이 등록되어 있어야 합니다. E5는 필자의 Office 365 라이선스이고 각자의 라이선스에 맞는 값을 넣어주면 됩니다.

  10. #사용자별로 라이선스 할당
    <#
    Office 365 E3라이선스
    xxx:ENTERPRISEPACK

    Office 365 E5라이선스
    xxx:ENTERPRISEPREMIUM  

    Office 365 ProPlus
    xxx:OFFICESUBSCRIPTION
    #>

    # UsageLocation 값이 있어야 라이선스 할당이 가능하므로 먼저 UsageLocation을 "KR"로 등록 한 후 라이선스(E5)를 할당
    Import-Csv -Path "C:\Import_User_Sample_ko.csv" | foreach { Set-MsolUser -UserPrincipalName $_.UserPrincipalName -UsageLocation "KR" }

    # 라이선스 할당
    Import-Csv -Path "C:\Import_User_Sample_ko.csv" | foreach { Set-MsolUserLicense -AddLicenses "kspark004:ENTERPRISEPREMIUM"}


    - 사용자별로 UsageLocation 지정과 라이선스 할당 결과 조회를 위해 사용자 조회시 특정 속성 값을 지정하여 조회하면 다음과 같은 결과를 얻을 수 있습니다.


    사용자 정보, 라이선스 확인


  11. 임의의 값으로 생성된 사용자의 비밀번호를 관리 편의상 하나의 값으로 변경하여 공지하기를 원하는 경우도 있습니다(또는 csv 파일을 통해 사용자별로 원하는 임시비밀번호로 설정해도 됩니다). 이러한 경우 사용자 비밀번호를 변경하고 첫 로그인 시 반드시 비밀번호를 변경하게 할 수 있습니다(ForceChagePassword 속성 사용).

  12. # 모든 사용자의 비밀번호를 특정 값으로 설정하고 로그인 시 강제로 비밀번호를 변경하도록 함

    Import-Csv -Path "C:\Import_User_Sample_ko.csv" | foreach { Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword "P@ssWord!" -ForceChangePassword $true }

    - 새로 생성한 사용자가 로그인 할때 Id(UserPrincipalName)와 초기 비밀번호를 입력했을 경우 아래 그림과 같이 암호를 업데이트 후 로그인 하도록 강제 설정할 수 있습니다.

    신규 로그인, 암호 업데이트

     

    ※ 참고 사이트




앞으로 몇편이 될지 모르겠지만 Powershell을 이용한 Office 365 관리 편을 작성하여 업로드할 예정입니다. 글은 실제 업무를 하면서 직면했던 문제와 문제를 해결한 경험(?) 위주로 작성할 생각입니다.

첫번째로 가장 기본적이고도 어려웠던 Powsershell을 이용한 Office 365에 로그인하는 방법을 설명하고자 합니다. 일반 로그인은 어렵지 않았지만 다중요소인증 설정으로 인해 혼란스러웠던 점을 담았았습니다.

※ 이번 포스팅에서는 Azure Active Directory V2 PowerShell 모듈은 다루지 않습니다.

1. Powershell을 이용하여 Office 365에 로그인하기 위한 준비

    • Window PC 준비(가급적 64비트를 권장함. 32비트는 관련 모듈이 2014년 10월에 개발 중단 되었습니다.)
      - Windows 10, Windows 8.1, Windows 8 또는 Windows 7 서비스팩 1(SP1)
      - Windows Server 2012 R2, Windows Server 2012, 또는 Windows Server 2008 R2 SP1

    • Office 365회사 또는 학교 계정이어야 하며 해당 계정은 Office 365 전역 관리자 역할 보유

    • 필요 소프트 웨어 설치

      • Microsoft Online Services 로그인 도우미를 설치. IT 전문가용 Microsoft Online Services 로그인 도우미 RTW msoidcli_64.msi 파일을 다운로드 받고 설치합니다.

      • Windows PowerShell용 Windows Azure Active Directory 모듈의 64비트 버전을 설치. Azure Active Directory 연결 에 접속하여 하단 다운로드할 파일 목록에서 AdministrationConfig-V1.1.166.0-GA.msi을 선택하면 실제로는 AdministrationConfig_3.msi 파일이 다운로드 받아지는데 이 파일을 설치합니다. (바탕화면에 'Microsoft Azure Active Directory Module for Windows PowerShell' 아이콘이 생깁니다)

      • 문서하단에 참고링크의 2017년 5월 31일자 이전 버전 문서에는 MFA 인증 부분이 없었습니다. 또 Windows PowerShell용 Windows Azure Active Directory 모듈도 MFA 인증 로그인이 불가능했었습니다. 그래서 Office 365에 Powershell로 로그인 하려면 해당 계정의 MFA 설정을 일시적으로 해제하거나 MFA가 enable되지 않은 임시 전역관리자 계정을 만들어 작업후 삭제하는 방법 밖에 없었습니다.

2. Powershell을 이용하여 Office 365에 로그인하기

    • 일반 인증 (아이디와 비밀번호)
      • 새로 생긴 바탕화면의 아이콘을 선택하면 Microsoft Azure Active Directory Module for Windows PowerShell 파워쉘 창이 실행되고 파워쉘 창안에 아래와 같은 명령어를 입력합니다.

          $UserCredential = Get-Credential

          Connect-MsolService -Credential $UserCredential

자격 증명 요청

      • Windows PowerShell 자격 증명 요청 대화 상자에서 사용자 이름과 암호를 입력한 다음 확인을 클릭하고 'Connect-MsolService -Credential $UserCredential' 명령어를 실행하면 아래와 같이 Office 365에 접속됩니다. 아무런 메시지가 나오지 않으면 접속이 완료된 것입니다.

접속 요청 실행 결과

      • Office 365에 접속이 잘 되었는지 확인하려면 여러 방법이 있지만 'Get-MsolAccountSku' 는 조직에 대 한 사용 가능한 라이센스 계획 표시하는 명령어로 간단히 확인해 볼 수 있습니다. 결과 화면에 로그인한 무료사용 계정 Office 365는 E5(ENTERPRISEPREMIUM) 25개 계정 중 3개가 사용되고 있음을 확인 할 수 있습니다(무료사용 계정은 한달 간 거의 제약없이 모든 기능을 사용해 볼 수 있습니다).

          Get-MsolAccountSku

접속 확인

    • MFA 인증 (다단계 인증으로 보안이 강화됨)
      • MFA는 비밀번호 외에 사용자의 스마트폰 앱, 전화나 문자로 인증을 거친 후 로그인 하도록 강화된 인증 체계입니다. 관리자가 MFA를 사용하도록 사용자별로 설정하면 사용자는 로그인 시 MFA 방식(앱, 전화, 문자)을 선택하고 이후로는 비밀번호 입력 후 선택한 방법으로 인증을 한 번 더 해야 합니다.
      • MFA의 경우 파워쉘 창에 'Connect-MsolService' 만 입력합니다. 입력 후 엔터를 치면 다음과 같은 창이 뜨고 ID와 비밀번호를 입력하면 선택했던 인증방식으로 인증을 요구합니다(선택했던 인증 외 다른 옵션도 사용 가능합니다).

          Connect-MsolService

MFA 로그인 창


MFA 로그인 인증

      • 휴대폰 앱의 경우에는 아래와 같이 알림이 오며 승인 또는 거부할 수 있으며 승인을 선택할 경우 최종적으로 로그인이 완료됩니다. 이후에는 일반 로그인과 동일합니다. 전화나 문자를 선택한 경우 전화가 직접 걸려와서 인증 문자를 불러줍니다. 영어로 불러줍니다. :-) 문자는 말그대로 문자로 인증번호를 보내줍니다. 해외에서 수신되는 문자라 스팸함으로 들어가지는 않는지 꼭 확인해야 합니다. 아래 그림은 모바일 장치 앱으로 승인 알림이 온 경우 입니다.

인증 앱

      • Android의 경우 Play store에서 iOS는 앱스토어에서 'Microsoft Authenticator'으로 검색하여 앱을 설치할 수 있습니다. 앱에서 계정을 추가하는 방법은 비교적 간단하나 필요 시 가이드를 작성을 고려해 보겠습니다.

앱설치



※ 참고 사이트


지난 2017년 4월 드디어 한국에도 부산에 Office 365 데이터센터가 오픈했습니다. 이제 국내 Office 365 사용자도 국내 데이터 센터를 이용할 수 있습니다.

우선 Office 365 Admin center에 로그인하여 '설정 > 조직 프로필' 메뉴를 선택하면 현재 Office 365의 데이터가 어느 위치에 있는지 확인 하실 수 있습니다. 그리고 데이터 상주 옵션을 변경하면 Office 365를 서비스받고 있는 지역의 데이터 센터로 데이터 이전 요청을 할 수 있습니다.

데이터센터 위치 확인

데이터 위치 항목 아래 데이터 상주 옵션에서 편집을 선택하여 데이터 위치 이전 요청을 할 수 있으며 이 이전요청 옵션은 2017년 10월 31일 까지 신청할 수 있고, 2017년 11월 1일부터 12개월 내에 이전 완료된다고 합니다.

데이터 상주 옵션

한 번 데이터 상주 옵션을 변경하면 되돌릴 수 있는 방법은 없으며 다시 아시아/태평양으로 되돌아가거나 특정 지역으로의 이전도 지원하지 않습니다.

데이터 이전 요청

※ 이번 요청으로 이전되는 데이터는 Exchange Online, SharePoint Online, Project Online 입니다. Skype for business는 기존 아시아/태평양 지역에 Sway와 Yammer는 미국 지역에 위치하게 될것입니다.

※ 실제 데이터이전은 2017년 5월 1일부터 진행되고 있어다고 하며 2018년 10월 31일까지 최종 이전 완료 된다고 합니다.

Office 365에서 그룹을 추가하고 구성원을 추가할 때 구성원 일괄 선택이 안됩니다. (아직까지는 지원하지 않는 듯 합니다. SaaS 특성상 어느날 갑자기 될지도 모릅니다.)

일괄 선택이 안될 경우 추가하고 싶은 구성원이 10명이면 10번 선택, 100명이면 100번 선택을 해야하는 불편함이 있어 조금 당황스럽기까지 합니다. 아래 그림은 26명의 구성원이 표시되지만 26명 모두를 한 번에 선택하는 기능은 안보입니다.

그룹 구성원 추가

이러한 경우 Exchange 설정 편집 기능을 이용하면 최대 500명까지 한 번에 선택할 수 있습니다(전역관리자 또는 Exchange 관리자 기능 필요).

Exchange 설정 편집은 직접 메뉴를 찾아가도 되지만 그룹 상세정보 창에서 구성원 편집하는 기능 바로 아래에 있습니다.

그룹 상세정보

Exchange 설정 편집을 선택하면 Exchange 관리에서 관리하는 그룹 정보가 보이고 구성원자격을 선택하여 구성원을 추가할 수 있습니다.

Exchange 그룹 설정

구성원을 추가하는 방법으로는 목록에서 필요한 구성원을 선택(Ctrl 또는 Shift 사용)하고 화면 하단 추가 버튼을 선택하면 선택한 구성원을 확인할 수 있고 최종으로 확인을 선택하면 그룹에 구성원이 추가됩니다.

목록에는 기본으로 페이지별 50명의 구성원이 표시되는데 500명 표시까지 선택할 수 있어 한 번에 500명까지 구성원을 선택하여 추가 가능합니다. 또한 구성원을 검색하여 추가하는 기능도 제공합니다.

아래 그림은 구성원 추가 후 Office 365의 그룹 상세정보 화면입니다. 구성원이 26명이 있고 모두 표시를 선택하면 구성원 편집화면으로 변경되며 모든 구성원이 표시됩니다.

구성원 등록 확인

OneDrive에서 파일이나 폴더를 공유할 때, 공유하고자 하는 사람을 등록하거나 공유하고자 하는 사람이 다수인 경우 사람 대신 그룹을 등록하여 편하게 공유할 수 있습니다.

OneDrive와 같이 액세스 제어에 사용되는 그룹은 Office 365 그룹 이거나 메일 사용이 가능한 보안 그룹 또는 보안 그룹 이어야 한다. 액세스 제어에 사용되는 그룹은 SharePoint에도 사용될 수 있습니다.

  1. Office 365 그룹
    Outlook online에서 그룹을 선택하여 누구나 생성할 수 있으며 그룹 생성 후 구성원을 추가하여 사용합니다.
  2. 메일 사용이 가능한 보안 그룹
    Office 365의 전역관리자 또는 Exchange관리자 권한이 있으면 Admin center의 그룹 메뉴에서 생성할 수 있으며 단순 메일 리스트로도 사용됩니다.
  3. 보안 그룹
    Office 365의 전역관리자 또는 사용자 관리 관리자 권한이 있으면 Admin center의 그룹 메뉴에서 생성할 수 있으며 Office 365용 모바일 장치관리에도 사용됩니다.

전역관리자가 새 그룹 생성 시 뜨는 팝업

※ Office 365 그룹은 주로 대화, 파일, 일정 등을 공유하기 위한 기능으로 Office 365 시스템은 그룹 생성 시에 다른 그룹(메일그룹, 메일 사용이 가능한 보안 그룹 등)보다 Office 365 그룹을 권장하나 단순한 액세스 제어를 위한 목록이 필요하다면 Office 365 그룹 보다는 메일 사용이 가능한 보안 그룹이나 보안 그룹을 만들어 사용하는 것이 light 하지 않나 생각합니다. 물론 개인적인 생각입니다.

OneDrive에서 일반 메일 그룹은 액세스 제어에 사용할 수 없으나 Office 365 그룹, 메일 사용이 가능한 보안 그룹, 보안 그룹은 사용할 수 있다. 아래 표는 그룹을 형식별로 생성하고 구성원을 추가하였습니다.

그룹이름 

 전자메일

형식 

 TipsTest

 TipsTest@kspark002.onmicrosoft.com

 Office 365 그룹 

 원드라이브공유

 share@kspark002.onmicrosoft.com

 메일 사용이 가능한 보안 그룹 

 전사직원

 all@kspark002.onmicrosoft.com

 메일 그룹 

우선 일반적인 메일 그룹은 OneDrive 공유 시 아래 그림과 같이 공유 그룹으로 사용할 수 없다. 그룹 이름을 인식하지 못하며 이메일을 입력하여도 외부사용자로 인식합니다.



전사직원 이름 조회이메일 조회

메일 사용이 가능한 보안 그룹이나 Office 365 그룹은 자동 조회되며 공유 가능한 그룹으로 인식됩니다.






+ Recent posts