CSV(클러스터 공유 볼륨)에서 BitLocker 사용

적용 대상: Windows Server 2022; Azure Stack HCI, 버전 22H2 및 21H2

BitLocker 개요

BitLocker 드라이브 암호화는 운영 체제와 통합되고 분실, 도난 또는 부적절하게 서비스 해제된 컴퓨터에서 데이터 도난 또는 노출의 위협을 해결하는 데이터 보호 기능입니다.

BitLocker는 TPM(신뢰할 수 있는 플랫폼 모듈) 버전 1.2 이상과 함께 사용할 때 가장 강력한 보호 기능을 제공합니다. TPM은 컴퓨터 제조업체가 최신 컴퓨터에 설치한 하드웨어 구성 요소입니다. TPM은 BitLocker와 함께 작동하여 사용자 데이터를 보호하고 시스템이 오프라인 상태일 때 컴퓨터가 변조되지 않도록 합니다.

TPM 버전 1.2 이상이 없는 컴퓨터에서는 BitLocker를 사용하여 Windows 운영 체제 드라이브를 암호화할 수 있습니다. 그러나 이를 구현하려면 사용자가 USB 시작 키를 삽입하여 컴퓨터를 시작하거나 최대 절전 모드에서 다시 시작해야 합니다. Windows 8부터 운영 체제 볼륨 암호를 사용하여 TPM 없이 컴퓨터의 볼륨을 보호할 수 있습니다. 두 옵션 모두 BitLocker에서 제공하는 시작 전 시스템 무결성 확인을 TPM과 함께 제공하지 않습니다.

TPM 외에도 BitLocker는 사용자가 PIN(개인 식별 번호)을 제공하거나 이동식 디바이스를 삽입할 때까지 일반 시작 프로세스를 잠글 수 있는 옵션을 제공합니다. 이 디바이스는 시작 키가 포함된 USB 플래시 드라이브일 수 있습니다. 이러한 추가 보안 조치는 다단계 인증을 제공하며 올바른 PIN 또는 시작 키가 표시될 때까지 컴퓨터가 최대 절전 모드에서 시작 또는 다시 시작되지 않도록 보장합니다.

클러스터 공유 볼륨 개요

CSV(클러스터 공유 볼륨)를 사용하면 Windows Server 장애 조치(failover) 클러스터 또는 Azure Stack HCI의 여러 노드가 NTFS 볼륨으로 프로비전된 동일한 LUN(논리 단위 번호) 또는 디스크에 대한 읽기-쓰기 액세스 권한을 동시에 가질 수 있습니다. 디스크는 ReFS(복원 파일 시스템)로 프로비전할 수 있습니다. 그러나 CSV 드라이브는 리디렉션 모드입니다. 즉, 쓰기 액세스 권한이 코디네이터 노드로 전송됩니다. CSV를 사용하면 클러스터된 역할은 드라이브 소유권을 변경하거나 볼륨을 분리 및 다시 탑재하지 않고도 한 노드에서 다른 노드로 빠르게 장애 조치(failover)할 수 있습니다. 또한 장애 조치(failover) 클러스터에서 잠재적으로 많은 LUN을 간소화할 수 있습니다.

CSV는 NTFS 또는 ReFS 위에 계층화된 범용 클러스터형 파일 시스템을 제공합니다. CSV 애플리케이션은 다음과 같습니다.

  • 클러스터형 Hyper-V 가상 머신에 대한 클러스터형 VHD/VHDX(가상 하드 디스크) 파일
  • 스케일 아웃 파일 서버 클러스터된 역할에 대한 애플리케이션 데이터를 저장하도록 파일 공유를 확장합니다. 이 역할의 애플리케이션 데이터에 대한 예로는 Hyper-V 가상 머신 파일 및 Microsoft SQL Server 데이터를 들 수 있습니다. ReFS는 Windows Server 2012 R2 이하의 스케일 아웃 파일 서버에 대해 지원되지 않습니다. 스케일 아웃 파일 서버에 대한 자세한 내용은 애플리케이션 데이터에 대한 스케일 아웃 파일 서버를 참조 하세요.
  • SQL Server 2012 및 이전 버전의 SQL Server에서 Microsoft SQL Server 2014 이상 FCI(장애 조치(failover) 클러스터형 클러스터형 워크로드)는 CSV 사용을 지원하지 않습니다.
  • Windows Server 2019 이상 MSDTC(Microsoft Distributed Transaction Control)

클러스터 공유 볼륨에서 BitLocker 사용

클러스터 내 볼륨의 BitLocker는 클러스터 서비스가 보호할 볼륨을 "뷰"하는 방법에 따라 관리됩니다. 볼륨은 SAN(스토리지 영역 네트워크) 또는 NAS(네트워크 연결 스토리지)의 LUN(논리 단위 번호)과 같은 실제 디스크 리소스일 수 있습니다.

또는 볼륨은 클러스터 내의 CSV(클러스터 공유 볼륨)일 수 있습니다. 클러스터에 지정된 볼륨과 함께 BitLocker를 사용하는 경우 클러스터에 추가하기 전이나 클러스터에 있을 때 BitLocker를 사용하여 볼륨을 사용하도록 설정할 수 있습니다. BitLocker를 사용하도록 설정하기 전에 리소스를 기본 테넌트 모드로 전환합니다.

Windows PowerShell 또는 Manage-BDE 명령줄 인터페이스는 CSV 볼륨에서 BitLocker를 관리하는 기본 방법입니다. 이 메서드는 CSV 볼륨이 탑재 지점이므로 BitLocker 제어판 항목에 권장됩니다. 탑재 지점은 다른 볼륨에 진입점을 제공하는 데 사용되는 NTFS 개체입니다. 탑재 지점은 드라이브 문자를 사용할 필요가 없습니다. 드라이브 문자가 없는 볼륨은 BitLocker 제어판 항목에 표시되지 않습니다.

BitLocker는 다음 순서대로 보호기를 시도하여 사용자 개입 없이 보호된 볼륨의 잠금을 해제합니다.

  1. 키 지우기

  2. 드라이버 기반 자동 잠금 해제 키

  3. ADAccountOrGroup 보호기

    1. 서비스 컨텍스트 보호기

    2. 사용자 보호기

  4. 레지스트리 기반 자동 잠금 해제 키

장애 조치(failover) 클러스터에는 클러스터 디스크 리소스에 대한 Active Directory 기반 보호기 옵션이 필요합니다. 그렇지 않으면 제어판 항목에서 CSV 리소스를 사용할 수 없습니다.

AD DS 인프라 내에 보관된 클러스터된 볼륨을 보호하기 위한 AD DS(Active Directory 도메인 Services) 보호기입니다. ADAccountOrGroup 보호기는 사용자 계정, 컴퓨터 계정 또는 그룹에 바인딩할 수 있는 do기본 SID(보안 식별자) 기반 보호기입니다. 보호된 볼륨에 대한 잠금 해제 요청이 이루어지면 BitLocker 서비스는 요청을 중단하고 BitLocker protect/unprotect API를 사용하여 요청의 잠금을 해제하거나 거부합니다.

새로운 기능

이전 버전의 Windows Server 및 Azure Stack HCI에서 지원되는 유일한 암호화 보호기는 SID 기반 보호기입니다. 여기서 사용되는 계정은 장애 조치(failover) 클러스터링 만들기의 일부로 Active Directory에서 만든 CNO(클러스터 이름 개체)입니다. 보호기는 Active Directory에 저장되고 CNO 암호로 보호되기 때문에 안전한 디자인입니다. 또한 모든 장애 조치(failover) 클러스터 노드가 CNO 계정에 액세스할 수 있으므로 볼륨을 쉽게 프로비저닝하고 잠금 해제할 수 있습니다.

단점은 세 배입니다.

  1. 이 메서드는 데이터 센터의 Active Directory 컨트롤러에 액세스하지 않고 장애 조치(failover) 클러스터를 만들 때 작동하지 않습니다.

  2. Active Directory 컨트롤러가 응답하지 않거나 느린 경우 볼륨 잠금 해제가 장애 조치(failover)의 일부로 너무 오래 걸리고 시간이 초과될 수 있습니다.

  3. Active Directory 컨트롤러를 사용할 수 없는 경우 드라이브의 온라인 프로세스가 실패합니다.

장애 조치(failover) 클러스터링이 볼륨에 대한 자체 BitLocker 키 보호기를 생성하고 기본 수 있는 새로운 기능이 추가되었습니다. 암호화되어 로컬 클러스터 데이터베이스에 저장됩니다. 클러스터 데이터베이스는 모든 클러스터 노드의 시스템 볼륨에 의해 지원되는 복제본(replica)ted 저장소이므로 모든 클러스터 노드의 시스템 볼륨도 BitLocker로 보호되어야 합니다. 장애 조치(failover) 클러스터링에서는 일부 솔루션이 시스템 볼륨을 암호화하지 않거나 암호화하지 않아도 되므로 이를 적용하지 않습니다. 시스템 드라이브가 Bitlockered가 아닌 경우 장애 조치(failover) 클러스터는 온라인 및 잠금 해제 프로세스 중에 경고 이벤트로 플래그를 지정합니다. 장애 조치(failover) 클러스터 유효성 검사는 Active Directory가 없거나 작업 그룹 설정이며 시스템 볼륨이 암호화되지 않은 것을 감지하는 경우 메시지를 기록합니다.

BitLocker 암호화 설치

BitLocker는 클러스터의 모든 노드에 추가해야 하는 기능입니다.

서버 관리자를 사용하여 BitLocker 추가

  1. 서버 관리자 아이콘을 선택하거나 servermanager.exe를 실행하여 서버 관리자 엽니다.

  2. 서버 관리자 탐색 모음에서 관리를 선택하고 역할 및 기능 추가를 선택하여 역할 및 기능 추가 마법사시작합니다.

  3. 역할 및 기능 추가 마법사가 열려 있는 상태에서 시작하기 전 창에서 다음을 선택합니다(표시된 경우).

  4. 역할 및 기능 추가 마법사 창의 설치 유형 창에서 역할 기반 또는 기능 기반 설치를 선택하고 다음을 선택하여 계속합니다.

  5. 서버 선택 창의 서버 풀에서 서버 선택 옵션을 선택하고 BitLocker 기능 설치에 대한 서버를 확인합니다.

  6. 역할 및 기능 추가 마법사의 서버 역할 창에서 다음 을 선택하여 기능 창으로 이동합니다.

  7. 역할 및 기능 추가 마법사의 기능 창에서 BitLocker 드라이브 암호화 옆에 있는 검사 상자를 선택합니다. 마법사에 BitLocker에 사용할 수 있는 추가 관리 기능이 표시됩니다. 이러한 기능을 설치하지 않으려면 관리 도구 포함 옵션을 선택 취소하고 기능 추가를 선택합니다. 선택적 기능 선택이 완료되면 [다음]을 선택하여 계속합니다.

참고 항목

향상된 스토리지 기능은 BitLocker를 사용하도록 설정하는 데 필요한 기능입니다. 이 기능을 사용하면 지원 시스템에서 암호화된 하드 드라이브를 지원할 수 있습니다.

  1. 역할 및 기능 추가 마법사의 확인 창에서 설치선택하여 BitLocker 기능 설치를 시작합니다. BitLocker 기능을 완료하려면 다시 시작해야 합니다. 확인 창에서 필요한 경우 자동으로 대상 서버 다시 시작을 선택하면 설치가 완료된 후 컴퓨터를 강제로 다시 시작합니다.

  2. 필요한 검사 상자를 선택하지 않으면 대상 서버를 자동으로 다시 시작하면 역할 및 기능 추가 마법사결과 창에 BitLocker 기능 설치의 성공 또는 실패가 표시됩니다. 필요한 경우 컴퓨터를 다시 시작하는 등 기능 설치를 완료하는 데 필요한 추가 작업에 대한 알림이 결과 텍스트에 표시됩니다.

PowerShell을 사용하여 BitLocker 추가

각 서버에 대해 다음 명령을 사용합니다.

Install-WindowsFeature -ComputerName "Node1" -Name "BitLocker" -IncludeAllSubFeature -IncludeManagementTools

모든 클러스터 서버에서 동시에 명령을 실행하려면 다음 스크립트를 사용하여 환경에 맞게 처음에 변수 목록을 수정합니다.

이러한 변수를 값으로 채웁니다.

$ServerList = "Node1", "Node2", "Node3", "Node4" 
$FeatureList = "BitLocker"

이 파트는 $ServerList 모든 서버에서 Install-WindowsFeature cmdlet을 실행하여 $FeatureList 기능 목록을 전달합니다.

Invoke-Command ($ServerList) {  
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools 
}

그런 다음 모든 서버를 다시 시작합니다.

$ServerList = "Node1", "Node2", "Node3", "Node4" Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

여러 역할 및 기능을 동시에 추가할 수 있습니다. 예를 들어 BitLocker, 장애 조치(failover) 클러스터링 및 파일 서버 역할을 추가하려면 $FeatureList 필요한 모든 항목을 쉼표로 구분하여 포함합니다. 예시:

$ServerList = "Node1", "Node2", "Node3", "Node4" 
$FeatureList = "BitLocker", “Failover-Clustering”, “FS-FileServer”

암호화된 볼륨 프로비전

BitLocker 암호화를 사용하여 드라이브를 프로비전하는 작업은 드라이브가 장애 조치(failover) 클러스터의 일부이거나 추가하기 전에 외부에서 수행될 수 있습니다. 외부 키 보호기를 자동으로 만들려면 BitLocker를 사용하도록 설정하기 전에 드라이브가 장애 조치(failover) 클러스터의 리소스여야 합니다. 장애 조치(failover) 클러스터에 드라이브를 추가하기 전에 BitLocker를 사용하도록 설정한 경우 외부 키 보호기를 만드는 추가 수동 단계를 수행해야 합니다.

암호화된 볼륨을 프로비전하려면 PowerShell 명령을 관리 권한으로 실행해야 합니다. 드라이브를 암호화하고 장애 조치(failover) 클러스터링이 자체 BitLocker 키를 만들고 사용할 수 있도록 하는 두 가지 옵션이 있습니다.

  1. 내부 복구 키

  2. 외부 복구 키 파일

복구 키를 사용하여 암호화

복구 키를 사용하여 드라이브를 암호화하면 BitLocker 복구 키를 만들어 클러스터 데이터베이스에 추가할 수 있습니다. 드라이브가 온라인 상태가 되면서 로컬 클러스터 하이브에서 복구 키만 참조하면 됩니다.

디스크 리소스를 BitLocker 암호화가 사용하도록 설정된 노드로 이동합니다.

Get-ClusterSharedVolume -Name "Cluster Disk 1" | Move-ClusterSharedVolume Resource -Node Node1

디스크 리소스를 유지 관리 모드로 전환합니다.

Get-ClusterSharedVolume -Name "Cluster Disk 1" | Suspend-ClusterResource

다음과 같은 대화 상자가 나타납니다.

Suspend-ClusterResource

Are you sure that you want to turn on maintenance for Cluster Shared Volume ‘Cluster Disk 1’? Turning on maintenance will stop all clustered roles that use this volume and will interrupt client access.

계속하려면 예를 누릅니다.

BitLocker 암호화를 사용하도록 설정하려면 다음을 실행합니다.

Enable-BitLocker -MountPoint "C:\\ClusterStorage\\Volume1" -RecoveryPasswordProtector

명령을 입력하면 경고가 나타나고 숫자 복구 암호가 제공됩니다. 향후 단계에서도 필요하므로 안전한 위치에 암호를 저장합니다. 경고는 다음과 유사합니다.


WARNING: ACTIONS REQUIRED:

    1. Save this numerical recovery password in a secure location away from your computer:
        
        271733-258533-688985-480293-713394-034012-061963-682044

    To prevent data loss, save this password immediately. This password helps ensure that you can unlock the encrypted volume.

볼륨에 대한 BitLocker 보호기 정보를 가져오기 위해 다음 명령을 실행할 수 있습니다.

(Get-BitlockerVolume -MountPoint "C:\\ClusterStorage\\Volume1").KeyProtector

키 보호기 ID와 복구 암호 문자열이 모두 표시됩니다.

KeyProtectorId : {26935AC3-8B17-482D-BA3F-D373C7954D29}
AutoUnlockProtector :
KeyProtectorType : RecoveryPassword
KeyFileName :
RecoveryPassword : 271733-258533-688985-480293-713394-034012-061963-682044
KeyCertificateType :
Thumbprint :

키 보호기 ID 및 복구 암호가 필요하고 BitLockerProtectorInfo라는 새 물리적 디스크 프라이빗 속성에 저장됩니다. 이 새 속성은 리소스가 유지 관리 모드에서 나올 때 사용됩니다. 보호기의 형식은 보호기 ID와 암호가 ":"로 구분되는 문자열입니다.

Get-ClusterSharedVolume "Cluster Disk 1" | Set-ClusterParameter -Name BitLockerProtectorInfo -Value "{26935AC3-8B17-482D-BA3F-D373C7954D29}:271733-258533-688985-480293-713394-034012-061963-682044" -Create

BitlockerProtectorInfo 키와 값이 설정되어 있는지 확인하려면 다음 명령을 실행합니다.

Get-ClusterSharedVolume "Cluster Disk 1" | Get-ClusterParameter BitLockerProtectorInfo

이제 정보가 있으므로 암호화 프로세스가 완료되면 디스크를 기본 테넌트 모드에서 제거할 수 있습니다.

Get-ClusterSharedVolume -Name "Cluster Disk 1" | Resume-ClusterResource

리소스가 온라인 상태가 되지 않으면 스토리지 문제, 잘못된 복구 암호 또는 일부 문제가 될 수 있습니다. BitlockerProtectorInfo 키에 적절한 정보가 있는지 확인합니다. 그렇지 않은 경우 이전에 제공된 명령을 다시 실행해야 합니다. 이 키에 문제가 없는 경우 문제를 해결하기 위해 조직 또는 스토리지 공급업체 내에서 적절한 그룹을 사용하는 것이 좋습니다.

리소스가 온라인 상태가 되면 정보가 올바릅니다. 기본 테넌트 모드에서 나오는 프로세스 중에 BitlockerProtectorInfo 키가 제거되고 클러스터 데이터베이스의 리소스에서 암호화됩니다.

외부 복구 키 파일을 사용하여 암호화

복구 키 파일을 사용하여 드라이브를 암호화하면 모든 노드가 액세스할 수 있는 위치(예: 파일 서버)에서 BitLocker 복구 키를 만들고 액세스할 수 있습니다. 드라이브가 온라인 상태가 되면 소유 노드가 복구 키에 연결됩니다.

디스크 리소스를 BitLocker 암호화가 사용하도록 설정된 노드로 이동합니다.

Get-ClusterSharedVolume -Name "Cluster Disk 2" | Move-ClusterSharedVolume Resource -Node Node2

디스크 리소스를 유지 관리 모드로 전환합니다.

Get-ClusterSharedVolume -Name "Cluster Disk 2" | Suspend-ClusterResource

대화 상자가 나타납니다.

Suspend-ClusterResource

Are you sure that you want to turn on maintenance for Cluster Shared Volume ‘Cluster Disk 2’? Turning on maintenance will stop all clustered roles that use this volume and will interrupt client access.

계속하려면 예를 누릅니다.

BitLocker 암호화를 사용하도록 설정하고 키 보호기 파일을 로컬로 만들려면 다음 명령을 실행합니다. 파일을 먼저 로컬로 만든 다음 모든 노드에서 액세스할 수 있는 위치로 이동하는 것이 좋습니다.

Enable-BitLocker -MountPoint "C:\ClusterStorage\Volume2" -RecoveryKeyProtector -RecoveryKeyPath C:\Windows\Cluster

볼륨에 대한 BitLocker 보호기 정보를 가져오기 위해 다음 명령을 실행할 수 있습니다.

(Get-BitlockerVolume -MountPoint "C:\ClusterStorage\Volume2").KeyProtector

그러면 키 보호기 ID와 키 파일 이름이 모두 표시됩니다.

KeyProtectorId : {F03EB4C1-073C-4E41-B43E-B9298B6B27EC}
AutoUnlockProtector :
KeyProtectorType : ExternalKey
KeyFileName : F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK
RecoveryPassword :
KeyCertificateType :
Thumbprint :

폴더를 만들도록 지정한 폴더로 이동하면 언뜻 보기에 표시되지 않습니다. 그 이유는 숨겨진 파일로 만들어지기 때문입니다. 예시:

C:\Windows\Cluster\>dir f03  

Directory of C:\\Windows\\Cluster 

File Not Found 

C:\Windows\Cluster\>dir /a f03  

Directory of C:\Windows\Cluster 

<Date> <Time> 148 F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK 

C:\Windows\Cluster\>attrib f03 

A SHR C:\Windows\Cluster\F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK

로컬 경로에 만들어지므로 모든 노드가 [항목 복사] 명령을 사용하여 액세스할 수 있도록 네트워크 경로로 복사해야 합니다.

Copy-Item -Path C:\Windows\Cluster\F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK -Destination \\Server\Share\Dir

드라이브는 파일을 사용하고 네트워크 공유에 있으므로 드라이브의 경로를 지정하는 기본 테넌트 모드에서 드라이브를 가져옵니다. 드라이브가 암호화로 완료되면 다시 시작하는 명령은 다음과 같습니다.

Resume-ClusterPhysicalDiskResource -Name "Cluster Disk 2" -RecoveryKeyPath \\Server\Share\Dir\F03EB4C1-073C-4E41-B43E-B9298B6B27EC.BEK

드라이브가 프로비전되면 *입니다. BEK 파일은 공유에서 제거할 수 있으며 더 이상 필요하지 않습니다.

새 PowerShell cmdlet

이 새로운 기능을 사용하면 리소스를 온라인 상태로 만들거나 복구 키 또는 복구 키 파일을 사용하여 수동으로 리소스를 다시 시작하는 두 개의 새 cmdlet이 만들어졌습니다.

Start-ClusterPhysicalDiskResource

예제 1

    Start-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryPassword "password-string"

예제 2

    Start-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryKeyPath "path-to-external-key-file"

Resume-ClusterPhysicalDiskResource

예제 1

    Resume-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryPassword "password-string"

예제 2

     Resume-ClusterPhysicalDiskResource -Name "My Disk" -RecoveryKeyPath "path-to-external-key-file"

새 이벤트

Microsoft-Windows-FailoverClustering/Operational 이벤트 채널에 추가된 몇 가지 새 이벤트가 있습니다.

키 보호기 또는 키 보호기 파일을 성공적으로 만들면 표시된 이벤트는 다음과 유사합니다.

Source: Microsoft-Windows-FailoverClustering Event ID: 1810 Task Category: Physical Disk Resource Level: Information Description: Cluster Physical Disk Resource added a protector to a BitLocker encrypted volume.

키 보호기 또는 키 보호기 파일을 만드는 데 오류가 있는 경우 표시된 이벤트는 다음과 유사합니다.

Source: Microsoft-Windows-FailoverClustering Event ID: 1811 Task Category: Physical Disk Resource Level: Information Description: Cluster Physical Disk Resource failed to create an external key protector for the volume

이전에 멘션 클러스터 데이터베이스는 모든 클러스터 노드의 시스템 볼륨에서 지원되는 복제본(replica)ted 저장소이므로 모든 클러스터 노드의 시스템 볼륨도 BitLocker로 보호하는 것이 좋습니다. 일부 솔루션이 시스템 볼륨을 암호화하지 않거나 원하지 않을 수 있으므로 장애 조치(failover) 클러스터링이 이를 적용하지 않습니다. 시스템 드라이브가 BitLocker에 의해 보호되지 않는 경우 장애 조치(failover) 클러스터는 잠금 해제/온라인 프로세스 중에 이를 이벤트로 플래그를 지정합니다. 표시된 이벤트는 다음과 유사합니다.

Source: Microsoft-Windows-FailoverClustering Event ID: 1824 Task Category: Physical Disk Resource Level: Warning Description: Cluster Physical Disk Resource contains a BitLocker protected volume, but the system volume is not BitLocker protected. For data protection, it is recommended that the system volume be BitLocker protected as well. ResourceName: Cluster Disk 1

장애 조치(failover) 클러스터 유효성 검사는 Active Directory가 없거나 작업 그룹 설정이고 시스템 볼륨이 암호화되지 않은 경우 메시지를 기록합니다.