26 Mart 2014 Çarşamba

Exchange Server 2010 Sp3 Mail Recipients ve Distribution Group İzinlerinin Belirli Kullanıcılara verilmesi Exchange Server 2010 Delagation



Exchange Server 2010 Sp3 Mail Recipients ve Distribution Group İzinlerinin Belirli Kullanıcılara verilmesi


Öncelikle Exchange 2010 ile beraber gelen yetki grupları ile yönetimin dağıtılması sağlanabilir. Ancak istenilenden fazla yetki de verilebilir. Yetkilerin sınırlandırılması için Exchange içerisindeki Role Grupları, Role Gruplarına atacak yetki ve komut parametrelerinin belirlenmesi ile istenen yetkilerin verilmesi sağlanabilir. Burada RBAC ve diğer konularla ilgili birçok bilgi bulabilirsiniz. 
Aşağıdaki link ve "role based access control rbac exchange 2010" gibi bir ifade ile arama yapıldığında çıkan sonuçlar yeterli olacaktır.
Burada RBAC ve diğer konularla ilgili detaylı bilgi bulabilirsiniz.
http://technet.microsoft.com/en-us/library/dd298183(v=exchg.150).aspx

Bu nedenle açıklama yapmadan istenilen yetkilerin verilmesi için gerekli adımları uygulamaya başlayabiliriz.

Amaç belirli bir kullanıcı grubuna Mail Box ve Distribution Group oluşturma ve Mailbox ve Distribution Grup özelliklerinde değişiklik yapma yetkisinin verilmesi. Delete, Disable, Remove ve MailBox üzerindeki Mail Forward, Quota ların yetki verilen kullanıcı grubun tarafından değiştirilmesinin engellenmesi.
Kısaca Exchange 2010 içerisindeki yetki gruplarının, bir kopyasını alıp, içinde gerekli değişiklikleri yapıp ilgili gruba atayarak yetkilendirme yapılır.

1. Kurulumla beraber gelen grupların yetkileri yeni oluşturulan yetki gruplarına aşağıdaki gibi kopyalanır.

Get-ManagementRole "Distribution Groups" | New-ManagementRole "YardimMasasi Distribution Groups"
Get-ManagementRole "Mail Recipient Creation" | New-ManagementRole "YardimMasasi Mail Recipient Creation No Delete"
Get-ManagementRole "Mail Recipients" | New-ManagementRole "YardimMasasi Mail Recipients No Delete"


2. Yeni oluşturulan yetki grupları içindeki silme gibi yetkiler aşağıdaki komutlarla alınır.
Burada -like yada -eq kullanılabilir. Komutun hangi yetkileri sileceğini görmek için sonuna -Whatif eklenebilir.

Get-ManagementRole "YardimMasasi Distribution Groups" | Get-ManagementRoleEntry | where {$_.name -like "Remove-DistributionGroup"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Distribution Groups" | Get-ManagementRoleEntry | where {$_.name -like "Remove-DynamicDistributionGroup"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Distribution Groups" | Get-ManagementRoleEntry | where {$_.name -like "Disable-DistributionGroup"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Distribution Groups" | Get-ManagementRoleEntry | where {$_.name -like "Write-AuditAdminLog"} | Remove-ManagementRoleEntry


Get-ManagementRole "YardimMasasi Mail Recipients Creation" | Get-ManagementRoleEntry | where {$_.name -like "Remove*" } | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients Creation" | Get-ManagementRoleEntry | where {$_.name -like "Write*" } | Remove-ManagementRoleEntry

Silinen izinler
Remove-RemoteMailbox
Remove-Mailbox
Remove-MailUser
Write-AdminAuditLog
Remove-MailContact

Get-ManagementRole "YardimMasasi Mail Recipients" | Get-ManagementRoleEntry | where {$_.name -like "set-mailboxpermission"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients" | Get-ManagementRoleEntry | where {$_.name -like "Disable-*"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients" | Get-ManagementRoleEntry | where {$_.name -like "Remove-*"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients" | Get-ManagementRoleEntry | where {$_.name -like "Write-AdminAuditLog"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients" | Get-ManagementRoleEntry | where {$_.name -like "Clear-ActiveSyncDevice"} | Remove-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients" | Get-ManagementRoleEntry | where {$_.name -like "Add-MailboxFolderPermission"} | Remove-ManagementRoleEntry


Yeni oluşturlan gruplardaki yetkiler aşağıdaki komutla görülebilir.
Get-ManagementRole "YardimMasasi Distribution Groups" | Get-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipient Creation No Delete" | Get-ManagementRoleEntry
Get-ManagementRole "YardimMasasi Mail Recipients No Delete" | Get-ManagementRoleEntry

3. İstenmeyen diğer yetkilerin alınması. Örnek olarak Bir Mailbox üzerinde Forward, Kota düzenleme yetkileri

Set-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-Mailbox" -Parameters ForwardingAddress,ForwardingSmtpAddress -RemoveParameter
Set-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-Mailbox" -Parameters ProhibitSendQuota,ProhibitSendReceiveQuota,IssueWarningQuota -RemoveParameter
Set-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-Mailbox" -Parameters RetainDeletedItemsFor,RetainDeletedItemsUntilBackup -RemoveParameter
Set-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-Mailbox" -Parameters GrantSendOnBehalfTo -RemoveParameter
Set-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-Mailbox" -Parameters SharingPolicy -RemoveParameter

Aşağıdaki komutla yetki verilen komutla uygulanabilir parametrenin izinin kaldırılğı kontrol edilebilir. Komutun çıktısı olmamalı. 
Get-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-Mailbox" | where {$_.parameters -eq "ForwardingAddress"}

Biraz açıklama ihtiyacı hissediyorum. ManagementRoleEntry içindeki kullanılabilir komutlar aşağıdaki gibi görülebilir. 
Tüm uygulanabilir komutların görülmesi için aşağıdaki komutlar uygulanabilir.
Get-ManagementRoleEntry "YardimMasasi Mail Recipients\*"
Get-ManagementRole "YardimMasasi Mail Recipients" | fl RoleEntries

Belirli bir komutun parametrelerinin görülmesi ile, verilen yetklilerle uygulanabilir komutların içindeki hangi parametrelerin kısıtlanabileceği belirlenebilir.
Get-ManagementRoleEntry "YardimMasasi Mail Recipients\Set-User" | paramaters
get-help set-user -Detailed | more

get-help çıktısındaki parametrelerin ismi yazılarak yetkiler kısıtlanabilir.


4. Yetki verilecek kullanıcıların yada grupların üye yapılacağı Management Role Group oluşturulması, yeni oluşturulan Management Role Groupların, Role Group a bağlanması ve yetki verilecek Active Directory Grubunun RoleGroup a üye yapılması
New-RoleGroup -Name "Test" -Roles "YardimMasasi Distribution Groups","YardimMasasi Mail Recipient Creation","YardimMasasi Mail Recipients" -Members "Yardim Masasi Grubu"

Örnek olarak Set-Mailbox komutu parametrelerini aşağıda sıraladım.
AcceptMessagesOnlyFrom,
AcceptMessagesOnlyFromDLMembers,
AcceptMessagesOnlyFromSendersOrMembers,
AddOnSKUCapability,
AddressBookPolicy,
Alias,
AntispamBypassEnabled,
ApplyMandatoryProperties,
Arbitration,ArbitrationMailbox,
ArchiveDatabase,ArchiveDomain,
ArchiveName,
ArchiveQuota,
ArchiveStatus,
ArchiveWarningQuota,
AuditAdmin,
AuditDelegate,
AuditEnabled,
AuditLogAgeLimit,
AuditOwner,
BypassLiveId,
BypassModerationFromSendersOrMembers,
CalendarLoggingQuota,
CalendarRepairDisabled,
CalendarVersionStoreDisabled,
ClientExtensions,
Confirm,
CreateDTMFMapCustomAttribute1,
Database,
DefaultPublicFolderMailbox,
DeliverToMailboxAndForward,
DisplayName,DomainController,
DowngradeHighPriorityMessagesEnabled,
DumpsterMessagesPerFolderCountReceiveQuota,
DumpsterMessagesPerFolderCountWarningQuota,
EmailAddresses,EmailAddressPolicyEnabled,
EnableRoomMailboxAccount,
EndDateForRetentionHold,
EvictLiveIdExtensionCustomAttribute1,
ExternalOofOptions,
FederatedIdentity,
FolderHierarchyChildrenCountReceiveQuota,
FolderHierarchyChildrenCountWarningQuota,
FolderHierarchyDepthReceiveQuota,
FolderHierarchyDepthWarningQuota,
Force,
ForwardingAddress,
ForwardingSmtpAddress,
GMGen,
GrantSendOnBehalfTo,
HiddenFromAddressListsEnabled,
IgnoreDefaultScope,
ImListMigrationCompleted,
ImmutableId,
IsExcludedFromServingHierarchy,
IssueWarningQuota,
JournalArchiveAddress,
Languages,
LinkedCredential,
LinkedDomainController,
LinkedMasterAccount,
LitigationHoldDate,
LitigationHoldDuration,
LitigationHoldEnabled,
LitigationHoldOwner,
MailboxMessagesPerFolderCountReceiveQuota,
MailboxMessagesPerFolderCountWarningQuota,
MailboxPlan,
MailRouting,
MailTip,
MailTipTranslations,
ManagedFolderMailboxPolicy,
ManagedFolderMailboxPolicyAllowed,
Management,
MaxBlockedSenders,
MaxReceiveSize,
MaxSafeSenders,
MaxSendSize,
MessageTracking,
MessageTrackingReadStatusEnabled,
MicrosoftOnlineServicesID,
ModeratedBy,
ModerationEnabled,
Name,
NetID,
NewPassword,
OABGen,
Office,
OfflineAddressBook,
OldPassword,
OriginalNetID,
Password,
PrimarySmtpAddress,
ProhibitSendQuota,
ProhibitSendReceiveQuota,
PstProvider,
PublicFolder,
QueryBaseDN,
QueryBaseDNRestrictionEnabled,
RecipientLimits,
RecoverableItemsQuota,
RecoverableItemsWarningQuota,
RejectMessagesFrom,
RejectMessagesFromDLMembers,
RejectMessagesFromSendersOrMembers,
RemoteAccountPolicy,
RemoteRecipientType,
RemoveManagedFolderAndPolicy,
RemovePicture,
RemoveSpokenName,
RequireSecretQA,
RequireSenderAuthenticationEnabled,
ResetPasswordOnNextLogon,
ResourceCapacity,
ResourceCustom,
RetainDeletedItemsFor,
RetainDeletedItemsUntilBackup,
RetentionComment,
RetentionHoldEnabled,
RetentionPolicy,
RetentionUrl,
RoleAssignmentPolicy,
RoomMailboxPassword,
RulesQuota,
SamAccountName,
SCLDeleteEnabled,
SCLDeleteThreshold,
SCLJunkEnabled,
SCLJunkThreshold,
SCLQuarantineEnabled,
SCLQuarantineThreshold,
SCLRejectEnabled,
SCLRejectThreshold,
SecondaryAddress,
SecondaryDialPlan,
SendModerationNotifications,
SharingPolicy,
SimpleDisplayName,
SingleItemRecoveryEnabled,
SKUAssigned,
SKUCapability,
StartDateForRetentionHold,
SuiteServiceStorage,
TenantUpgrade,
ThrottlingPolicy,
Type,
UMDataStorage,
UMDtmfMap,
UMGrammar,
UsageLocation,
UseDatabaseQuotaDefaults,
UseDatabaseRetentionDefaults,
UserCertificate,
UserPrincipalName,
UserSMimeCertificate,
WhatIf,
WindowsEmailAddress,
WindowsLiveID,

13 Mart 2014 Perşembe

SQL Server Cluster Ortamında User Database, System Database, Reporting Server veritabanlarının (master, model, msdb) yeni sürücüye taşınması.

Yeni Diskler tüm Cluster üyesi sunuculara yada tekil sunucuya tanıtılır.
Herhangi bir cluster üyesi sunucudan Disk Management ile disk Online ve Initialize edilir ve Formatlanır. Disk Diğer Cluster üyesi sunucularda kullanılmayan sürücü harfi belirlenir.
Disk tekrar offline yapılır.
Failove Cluster Manager konsolunda Storage başlığına sağ tıklanır ve Add Storage seçilir ve disk eklenir.
Service and Application altında diskin ekleneceği SQL Cluster Resource üzerinde sağ tıklanır ve Add Storage seçilir.

Eklenen disk Other Resource altında SQL Server (InstanceName) özelliklerinde Dependencies e eklenir.

OK butonuna tıklanır. SQL Server Resource Offline ve Online yapılarak yapılana ayarların etkinleşmesi sağlanır.

Auditlerin taşınması:
Eğer Audit yapılandırılmış ise SQL Server Man Consolde Security --> Audits altındaki her tanımlama için, sağ tıklanır Disable Audit seçilir. Sonra Audit özelliklerinde teki log dosyalarının konumları değiştirilir.Önceki log dosyaları yeni diskteki belirlenmiş klasörlere kopyalanır. Enable Audit ile loglama aftifleştirilir. Eğer fazla dosya varsa bu işlem daha sonraya bırakılabilir.

User Db lerin taşınması:
Taşınacak veritabanları Deatach edilip yeni konumlarına kopyalanıp attach edilir.

TempDb nin taşınması:
Önce Temp dblerin konumunu değiştiriyoruz. Taşınacak sürücünün T olduğunu düşünelim.

USE master
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'T:\TmpDATA1\tempdb.mdf') 
GO 
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'T:\TmpDATA1\tempdb.ldf')
GO

SQL Servisi yeniden başlatılır. 

Temp dbler için Internet üzerinde konfigürasyon önerilerini bulabilirsiniz. Genel olarak CPU sayısı kadar tmp db açılması yada 8 den fazla yapılmaması gibi öneriler bulunmakta. Bu çalışmada 8 core olan bir sunucuda tempDb leri oluşturuyoruz. TempDb lerin oluşturulacağı sürücünün T: sürücüsü olduğunu düşünelim.


ALTER DATABASE tempdb

ADD FILE (NAME = tempdb1, FILENAME = 'T:\TmpDATA1\tempdb1.mdf', SIZE = 1024);

ALTER DATABASE tempdb

ADD FILE (NAME = tempdb2, FILENAME = 'T:\TmpDATA1\tempdb2.mdf', SIZE = 1024);

ALTER DATABASE tempdb

ADD FILE (NAME = tempdb3, FILENAME = 'T:\TmpDATA1\tempdb3.mdf', SIZE = 1024);

ALTER DATABASE tempdb

ADD FILE (NAME = tempdb4, FILENAME = 'T:\TmpDATA1\tempdb4.mdf', SIZE = 1024);

ALTER DATABASE tempdb

ADD FILE (NAME = tempdb5, FILENAME = 'T:\TmpDATA1\tempdb5.mdf', SIZE = 1024);

ALTER DATABASE tempdb

ADD FILE (NAME = tempdb6, FILENAME = 'T:\TmpDATA1\tempdb6.mdf', SIZE = 1024);

ALTER DATABASE tempdb

ADD FILE (NAME = tempdb7, FILENAME = 'T:\TmpDATA1\tempdb7.mdf', SIZE = 1024);

GO

SQL Servisi yeniden başlatılır. Dosyaların verilen konumda oluştuğu kontrol edilebilir.


Sistem Veritabanlarının Taşınması:
Sistem veritabanları taşımak için aşağıdaki Query uygulanır. 

ALTER DATABASE  Model  MODIFY FILE ( NAME = modeldev, FILENAME = 'K:\Data1\model.mdf' )
ALTER DATABASE  Model  MODIFY FILE ( NAME = modellog , FILENAME = 'K:\Data1\modellog.ldf' )

ALTER DATABASE  MSDB MODIFY FILE ( NAME = MSDBData, FILENAME = 'K:\Data1\MSDBData.mdf' )
ALTER DATABASE  MSDB MODIFY FILE ( NAME = MSDBLog , FILENAME = 'K:\Data1\MSDBLog.ldf' )

SQL Servisi durdurulur.
Dosyalar ilgili konuma kopyalanır.

Master Db nin taşınamsı için
SQL Server Configuration Manager açılır. SQL Server Services başlığına tıklanır. Sağdaki pencerede SQL Server (InstanceName) özelliklerine girilir. Advanced tabında Start Parameters taşınacak klasörlerin yolları
yazılarak düzenlenir.

Startup Parameters ilk hali
-dL:\MSSQL10_50.MSSQLSERVER2\MSSQL\DATA\master.mdf;-eL:\MSSQL10_50.MSSQLSERVER2\MSSQL\Log\ERRORLOG;-lL:\MSSQL10_50.MSSQLSERVER2\MSSQL\DATA\mastlog.ldf

Düzenlenen hali
-dK:\Data1\master.mdf;-eK:\Logs\ERRORLOG;-lK:\Data1\mastlog.ldf

Dump Directory parametresindeki klasör yolu da düzenlenir.

Aşağıdaki Query ile MasterDB nin konumunun doğru olduğu gözlemlenir.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID('master');
GO

SQL Servisi başlatılır.

Log Konumlarının değiştirilmesi.
SQL Management Studio açılır. SQL Server Agent altında Error Logs üzerinde sağ tıklanır ve Configure seçilir. Ekrana gelen pencerede ilgili ayarlar yapılandırılır.

Analysis Service Taşınması:
SQL Management Studio açılır,Analysis Service e bağlanılır. 










Analysis Server Özelliklerinde BackupDir, DataDir, LogDir yolları düzenlenir.


Management Studio kapatılır. Analysis Service durdurulur. OLAP klasörü yeni sürücüye kopyalanır.
Tüm Cluster üyesi sunucularda aşağıdaki Registry ayarları yapılır.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSSQLServerOLAPService
yada
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSOLAP$InstanceName anahtarında ImagePath yeni sürücü yolu olarak düzenlenir.


OLAP\Config\msmdsrv.ini dosyası açılır ve yol tanımları düzenlenir.

<ConfigurationSettings>
    <DataDir>K:\OLAP\Data</DataDir>
    <LogDir>K:\OLAP\Log</LogDir>
    <BackupDir>K:\OLAP\Backup</BackupDir>
     <AllowedBrowsingFolders>K:\OLAP\Backup\|K:\OLAP\Log\</AllowedBrowsingFolders>
    <TempDir>K:\OLAP\Temp</TempDir>


Reporting Services Taşınması:
Aynı sunucu içinde başka bir sürücüye taşıma yapacağımız için ReportingServer ve ReportingServTempDB veritabanları Detach edip, ReportServer.mdf, ReportServer_log.ldf, ReportServerTempDB, ReportServerTempDB_log.ldf dosyaları yeni konuma kopyalanır ve atach edilir. Report Server URL sine bağlanılır. Sorun olursa Reporting Services Configuration Manager da Database başlığı altında Change Database butonu tıklanır ve ekrana gelen pencerede Choose an existing report server database seçilir ve Next butonuna tıklanır. Sonraki pencerede SQL Server üzerinde yönetim yetkisine sahip SQL kullanıcısı yada zeten login olmuş kullanıxı yetkisi ile Report Server a bağlanılır. Test Connection ile bağlantı doğrulanır. Credentials bölümünde Credentials seçilerek ayarlar bitirilir ve tekrar bağlantı test edilir.


Default Database Location:

SQL Management Studio açılır. Sunucu adı üzerinde sağ tıklanır, ekrana gelen pencerede Database Settings de yeni sürücü ve klasör yolu düzenlenir.


Failover Cluster Manager açılır ve Devreden çıkarılacak Diskin ilişkisi, SQL Server (Instance Name) özelliklerinde, Dependicies tabında seçilerek Delete butonu ile kaldırılır ve Disk Offline yapılır.SQL Server Active Node, uygun olan diğer bir Node üzerine alınır. Hatalar gözlemlenir. Eğer hata görülmüyorsa Failover Cluster Manager, Service and applications altında SQL Server (Instance Name) seçililir ve detay penceresinde Disk Drives altında ilgili disk seçlerek Remove from SQL server seçilerek işlem bitirilir.

Move master db sql cluster