trešdiena, 2012. gada 8. februāris

DB Mail: Lietotāja tiesības izmantojot sertifikātus

Šajā rakstā skripts, kas parāda, kā var nodrošināt tiesības sūtīt e-pastu tikai no ar sertifikātu palīdzību parakstītas procedūras (agrāk bija raksts, kurā parādīts, kā e-pastu var atļaut sūtīt pilnīgi visiem SQL Server lietotājiem: Piemērs: DB Mail e-pastu sūtīšana).

Vēlamās priekšzināšanas šajā rakstā- kas ir sertifikāti.

Skripts sastāv no divām daļām-pirmajā daļā tiek izveidota procedūra, kas sūta e-pastu (jābūt konfigurētam DB Mail), tiek izveidots sertifikāts un parakstīta procedūra. otrajā daļā msdb datu bāzē tiek izveidots lietotājs no sertifikāta un tam piešķirtas tiesības sūtīt e-pastu.

Manuprāt visai eleganti!

Lietotāja datu bāzē jāizpilda:
Create Procedure dbo.SendMail
(
    @msg nvarchar(max)
)
As
Begin
    Set NoCount ON;
       
    EXEC msdb.dbo.sp_send_dbmail
        @profile_name='MyProfile',
        @recipients='janis@domens.lv',
        @subject='subject',
        @body= @msg;
End
Go
Create Certificate MyCertificateForSendMail
    ENCRYPTION BY PASSWORD = N'DrosaParole'
    WITH SUBJECT = N'Epastu sūtīšanai';
Go
ADD SIGNATURE TO dbo.SendMail BY CERTIFICATE MyCertificateForSendMail
    WITH PASSWORD = 'DrosaParole'; -- OK
Go
BACKUP CERTIFICATE MyCertificateForSendMail
    TO FILE = N'C:\Sertifikati\MyCertificateForSendMail.cer'
Go
-- Piešķiram vajadzīgajam lietotājam tiesīas ŠEIT
Grant Execute On dbo.SendMail To SomeUser
Go
msdb sistēmas datu bāzē jāizpilda:
use msdb;
Go
CREATE CERTIFICATE MyCertificateForSendMail
FROM FILE = N'C:\Sertifikati\MyCertificateForSendMail.cer'
Go
Create User CertUser FROM Certificate MyCertificateForSendMail
EXEC sp_addrolemember N'DatabaseMailUserRole', N'CertUser'

Nav komentāru:

Komentāra publicēšana