2016-07-19

Azure Audit Logs and DBA's

שלום רב
כבר מעל חודשיים מעל הפוסט האחרון, הסיבה המרכזית היא שעברנו בחברה שלנו ל Storage חדש, בסביבת ה On Premise.
עברנו לסביבת All Flash של Kaminario הישראלית.
אבל מה לנו בפוסט על הענן ועל Storage....
היום נדבר על שליטה - אנו ה DBA הרי ידועים כ Control freaks. הרי למי אין איזה ג'וב שמתריע לו שיש DB חדש לגבות ? למי אין ג'וב שמתריע על כל שינוי?
ובכן ב Azure אפשר לשנות בסיסי נתונים על ידי פקודות T-SQL או PS, ורוב פקודות אלו מתועדות.
אבל יש דברים שעושים דרך הפורטל ואז זה לא מתועד בבסיסי הנתונים עצמם.

ולכך יש את ה Audit logs.

זהו מנגנון המתעד כל מה שקורה בפורטל - החל ברמת יצירות שרתים מכונות וכלה מאילו אלרטים קפצו.

יש 2 דרכים לראות את הלוגים הללו מהפורטל עצמו ומ POWER BI.
  1. פורטל עצמו: לוחצים על הכפתור של הלוגים,
 
לאחר שלחצתם על הכפתור מגיעים למסך חיפוש, זהו מסך יחסית חדש (עד לפני שבועיים זה הייתה רשימה וכיום מסך חיפוש, שבטח עוד יעבור שיפוץ).
ניתן לפלטר לפי מספר קריטריונים - אני חיפשתי פעולות אדמינסטטיביות שקשורות לבסיסי נתונים כמו יצירת בסיס נתונים, שרתים, הדלקת audit ועוד.
 
להלן מסך החיפוש המחודש ומספר תוצאות
ריבועים אדומים אלו דוגמאות לפילטרים.
ריבועים כחולים מייצגים דוגמא למידע - אם זה מישהו בפורטל או אם זה אוטמציה שהופעלה בענן ואז זה SQL User.
 
רואים פה את מרחב הפעולות שבוצעו ומתי ואם לוחצים על השורה יש פרטים למטה, ואפשר לשמור את זה לאקסל...


 
 
 
מצורף מאמר על מסך החיפוש המחודש:
 
2.  POWERBI - מיקרוסופט נותנים API ודוחות מובנים ללוגים הללו - להלן 2 מסכים לדוגמא הראשון שמיקרוסופט יצרו, והשני שאני יצרתי שמחזיר מידע רק על SQL:
 

/
 
 
הדבר הבא שאני ממתין לו בקוצר רוח - הוא כמובן ליצור התרעה על פעולות אלו... וכך לקבל מידע על אלו שמעלים לי tiers בלי רשות.... ולא לדעת את זה בחשבונית....
 
עד כאן להיום
נסו ותהנו.
פיני
 
 
 

2016-05-02

Geo-Replications Types in SQL Azure - New features

שלום רב
והיום לשם שינוי פוסט בעיברית.

בתאריך 2015-02-19 כתבתי פוסט בנושא Geo-Replications Types in SQL Azure.

http://www.sqlazure.co.il/2015/02/geo-replications-types-in-sql-azure.html

שם הצגתי את 2  האפשרויות שקיימות ב Azure SQL בנושא זה:
  • Standard Geo-Replication.
  • Active Geo-Replication. 
כאשר ההבדלים המרכזיים היו בתחום של Readable / NON Readable, מיקום הרפליקות ועוד.

בתאריך 2015-11-23 הצגתי בפוסט נוסף את החידוש של Fail Over - כלומר שאפשר לשחק בין Primary and Secondary.

http://www.sqlazure.co.il/2015/11/failover-in-sql-azure-db-with-geo.html

והיום אציג את הצעד השלישי בהתפתחות עולם ה - DR ב SQL Azure.
וזה מה שמעניין בענן - צריך חזון - ואז האפשרויות בלתי מוגבלות - ולנו המשתמשים הכל תלוי בעומק הכיס....
השינוי הכי מהותי לדעתי הוא זה:
  • The performance objectives can be different between primary and secondary. 
כלומר ניתן יהיה לעבוד עם קונפיגורציה כזו שה Primary יהיה בעלות למשל של S3, ואילו ה Secondary יהיה S0. וכך יורדו עלויות בצורה דרמטית. חייבים לקחת בחשבון שאם מדובר על DB  שהוא Heavy Write, הכתיבה בצד השני תהיה הרבה יותר איטית וזה לא מומלץ כל כך.
 
מיגבלה נוספת היא שבין tiers כלומר בין Standard and Premium - אי אפשר לעשות קונפיגורציה. P1 Primary לא יכול להיות עם S0 Secondary.
 
כבר לא תהיה אפשרות להרים NON Readable Secondary (ממש באסה - שוב צריך לדחוף את היד לכיס, האפשרות הזו חסכה 20 אחוז מעלות ה Primary).
 
אופציה נוספת שנפתחה היא שבשכבות הזולות ניתן יהיה לפתוח 4  Secondaries, ובכך לעשות סוג של Load balance , בפעולות קריאה. גם פתיחת אופציה למיקומים ברחבי העולם נשמעת מעניינת.
 
להלן 2 לינקים שמרחיבים על האופציות החדשות:
 
 
 
למי שיש היום  Non-readable secondary, צריך לתכנן מעבר ושידרוג עד אפריל 2017:
 
 
 
בקיצור יללה התחילו לרפלק מה שאפשר - לא לשכוח לחשוב על הכיס ועל הביצועים.
פיני
 
 

2016-04-11

Dashboards in Azure Portal

Hi
 
Today I will be reviewing the Azure Portal Dashboard.
We have seen lots of improvements in that field.
It has developed to include a variety of options, and lot of use cases:
 
  1. Monitoring, with full screen and charts.
  2. Shortcuts to the most usable apps.
  3. Share dashboards between users.
  4. You can have multi Dashboards, like Dashboard for DB's, for Storage or VM's or per application or resource group.
I find these new features very useful and very easy to implement.
Here are some screenshots showing the uses.
 
Image 1 - shows what options we have for the Dashboards
 
 
:
We can add new, edit an exiting one, share to other users, clone and delete.
 
 
Image 2 - shows the options when clicking on the arrow near the Dashboard, we see the list of my dashboards, and the dashboards that was shared with me.
 
 
 
Image 3 - shows the screen after clicking on "Share", we can share to a subscription, and put it in a location as resource group.
 
 
 
 
Image 4 - shows a custom Dashboard I created for a 10 sharded DB system - to have the DTU and Storage in the same place - also adding the management DB.
 
  
 
So enjoy your journey with in the new Dashboards world.
 
Thanks
Pini 
 

2016-02-11

Cross Database Queries in SQL Azure DB - Part 2

Hi All
 
So After a month of using Cross Database Queries in SQL Azure DB, I can say that we have a very useful tool.
 
We can use in many scenarios, I will show today one.
 
We are using 10 shards DB's to balance read operations to many DB's. The write operations goes to the DB's as well.
 
I' as a DBA wants to know the status of all DB's, so instead of creating PowerShell that connect to all of the DB's I have created external tables in 1 DB that reads the  
 
sys.dm_db_resource_stats 
 
from all DB's' so I have now 1 real table and 9 external tables.
 
I have created a view that reads from al 10 tables' and now I see all data from all shards.
 
I also put it in PowerBI and I see it in a visual way - and also in my Mobile.
 
Here I have in the first line DTU AVG value for each shard in the last 10 minutes, 1 clock that avg all shards.
 
The second line is the DTU real value in the last 10 Minutes per Shard.
The Third line is the DATA IO value in the last 10 Minutes per Shard.
 
 
 
I More thing, in ssms in sql server 2016 you have special place for external tables:
 
 
 
 
But in SQL Azure - not yet, and even if you will run create script you will not see it.... just use :
 
select * from sys.external_data_sources
select * from sys.external_tables
 
enjoy.
 

2016-01-04

Cross Database Queries in SQL Azure DB - Part 1

Hi
 
I wanted to write this post a long time ago but have not had the chance, so now with the new year - this will be the first post for 2016.
 
Cross Database Queries in SQL Azure DB was a key feature that was missing from day 1 on SQL Azure DB.
Finally we have this  key feature, and no, it is not the same as in the regular SQL Server. We have a new way to do this. It is bases on the new key feature  in SQL Server 2016 called "External Tables" (https://msdn.microsoft.com/en-us/library/dn935021.aspx).
Also known as "PolyBase".
 
The logic behind the feature is that you can query tables with-in your DB (like you are doing today) and also at any other DATA source like it is a table within the DB.
 
From one SQL Azure DB to another we can not connect to it via linked server. However a second SQL Azure DB is referenced like any other external data source.
Microsoft thinking is that SQL Azure DB is another DATA sources for External tables ( like Hadoop, Blob storage ect..).
 
 
I am adding some scripts to make it all easy for you to run and test (here I will not elaborate now about the query performance and execution plans...).
 
First are 2 scripts with reference to security issues (its all about trusted connections between 2 DATA sources):
 
IN DB1
 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'youramazingpassword';
 
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = 'youramazingID',
SECRET = 'youramazingpassword';

The "username" and "password" should be the username and password used to login into the DB2 database.
 
IN DB2 (you create a regular table):
 
CREATE TABLE [dbo].[Customers223](
[CustomerId] [int] NOT NULL,
[Name] [nvarchar](256) NOT NULL,
[RegionId] [int] NOT NULL

);

 
IN DB1  (you create an external table):
 

you create an external DATA Source :
 
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION='YOURSERVERNAME.database.secure.windows.net',
DATABASE_NAME='DB2',
CREDENTIAL= ElasticDBQueryCred

 

);


 
 
 
you create an external table that reference to that table in DB2 - with the same name:
 
CREATE EXTERNAL TABLE [dbo].[Customers223](
[CustomerId] [int] NOT NULL,
[Name] [nvarchar](256) NOT NULL,
[RegionId] [int] NOT NULL

)

WITH
(
DATA_SOURCE = RemoteReferenceData
);
 
IN DB2
insert into [Customers223] select 2,'TestPini',3
 
IN DB1
 
select * from [dbo].[Customers223]
 
And....................Yeeeeeeeessssssssssssssssssssssssssss
you will see data from DB2
4 long years I am waiting for this !!!!!!
 
A few things to remember:
  1. If you will do not have an object with the same name in DB2 - you will get error when query it saying "The underlying error message received was: 'Invalid object name 'dbo.Customers224'.'." 
  2. If you add column in DB2 in the table. and you do not add it in the EXTERNAL Table... then you will not see the data. BUT an error " The feature 'ALTER TABLE' is not supported with external tables." You need to drop and create the external table.
  3. the first query - when creating the connection is extremely slow - make your coffee - relax and then all will be good.

  4. the external table can be in a different name then the source, but then - when you create it you must add this in the "WITH" clause:
    WITH
    (
      DATA_SOURCE = RemoteReferenceData,
    SCHEMA_NAME = N'dbo',
    OBJECT_NAME = N'Customers226',
     
    ); 
in DB1 you can check these DMV's:
 
select * from sys.external_data_sources
select * from sys.external_tables
 
have a lovely year.
 
 
 

2015-12-08

All about Security in SQL Azure DB

Hi All
 
Since this is become more and more important for SQL Azure DB I am writing about 'Security Features in SQL Azure DB'.
 
I will put everything in a list and links for all features.
1)    Azure SQL Database security guidelines and limitations:
  a) Link: https://azure.microsoft.com/en-us/documentation/articles/sql-database-security-guidelines/.
  b) This link explain about: Firewall, Connection encryption and certificate validation, and some best Practices.
2)    Connecting to SQL Database: Best Practices and Design Guidelines:
  a) Link: https://azure.microsoft.com/en-us/documentation/articles/sql-database-connect-central-recommendations/
  b) This link bring few other links of the FW issue and connection Ports.
3)    Connecting to SQL Database By Using Azure Active Directory Authentication
  a) Link: https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/
  b) You have in this link few other links of the options to connect to SQL Azure DB :
    i)  With Password Authentication.
    ii) With Integrated Authentication.
    iii)SQL Authentication (https://azure.microsoft.com/en-us/documentation/articles/sql-database-manage-logins/).
4)    Security Features Within The SQL:
  a) Protect DATA
    i)TDE - Transparent Data Encryption: https://msdn.microsoft.com/en-us/library/dn948096.aspx. This is encryption in files level.
    ii)Always Encrypted: https://azure.microsoft.com/en-us/blog/microsoft-azure-sql-database-provides-unparalleled-data-security-in-the-cloud-with-always-encrypted/ & https://msdn.microsoft.com/en-us/library/mt163865.aspx .  This is encryption in filed level.
  b) Control Access:
    i)  Azure Active Directory: 3.a
    ii) Row Level Security: https://azure.microsoft.com/en-us/blog/row-level-security-for-sql-database-is-generally-available/ & https://msdn.microsoft.com/en-us/library/dn765131.aspx
    iii)Dynamic Data Masking: https://azure.microsoft.com/en-us/documentation/articles/sql-database-dynamic-data-masking-get-started-portal/ .
  c) Monitor Activity:
    i) Auditing: https://azure.microsoft.com/en-us/documentation/articles/sql-database-auditing-get-started/ I love this feature….
    ii)Threat Detection: https://azure.microsoft.com/en-us/blog/threat-detection-public-preview/.
5) Security Features Within The Portal – RBAC - Role-based Access Control:
    i)We can delete DB's via portal – so we need to understand the concept of RBAC: https://azure.microsoft.com/en-us/documentation/articles/role-based-access-control-configure/ & look for SQL in https://azure.microsoft.com/en-us/documentation/articles/role-based-access-built-in-roles/.
Security Center

Last and not least is the new Security Center. Insert into the Portal and go to the Security Center:
 
now we can see the wrong configurations for each type : VM's, network and DB
 
 
what the suggest now is the auditing and TDE features - if we enabled or disabled them.
 
 

 

Very nice feature
 
 
thanks.
 

2015-11-23

FailOver in SQL Azure DB with Geo Replication

Hi All
 
New feature was released lately - Fail Over in the Geo Replication in SQL Azure.
The Announcement is here:
 
 
As You can see they added Failover feature. That means that until today you have Primary and Secondary DB's, DATA moved on one direction and you could disconnect the connection when ever you wish. but then you have to build everything from the beginning, (you can look in my old post about geo-replications types in sql azure).
Now DATA moved backward, when you click Fail over - you still have 2 DB's but the Secondary become Primary and vise versa. I this this is a great feature.
you can also read in Hebrew about it in Geri's Reshef Blog
 
 
This is the new link
 
enjoy