初创公司如何使用我的 Azure 提供的服务来制作可扩展的高级安全模型作为 MS CRM 2015 中存在的安全性?
How can a startup go around making a scalable advanced security model as the security existing in MS CRM 2015 using services offered my Azure?
Azure AD 提供了身份验证和授权平台。 Azure SQL 数据库提供行级安全性。使用 Azure API 服务支持将两个平台结合起来,实现高级安全模型作为 MS CRM 2015 中的分层模型。这在现实中可能吗?有现成的实现吗?
不确定这是否直接回答了您的问题,但您当然可以在 Azure SQL 数据库上将 Azure AD 身份验证与行级安全性 (RLS) 结合使用,以启用不同的 Azure AD 身份以查看不同的子集数据,取决于他们是谁以及他们拥有什么组成员资格。组成员身份对于启用分层访问控制特别有用。
在 Azure SQL 中设置 Azure AD 身份验证的演练可在此处获得数据库:https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/
一旦你在 Azure users/groups 中拥有基于 Azure AD 身份的 SQL 数据库,你就可以创建一个 RLS 安全策略,根据执行查询的用户的身份过滤行.
这是一个简单的 T-SQL 示例:假设您的 Azure AD 有很多用户,其中一些是 'Admin' 组的成员。在 Azure SQL 数据库中,我们有一个 table 'Orders' 和一个 'AssignedUser' 列,指示每一行属于哪个用户。用户应该只能看到分配给他们的行,除非他们是 'Admin' 组的成员,在这种情况下他们应该看到所有行。
-- Set up dummy table
CREATE TABLE ORDERS Orders (
Date date,
Item nvarchar(64),
Price float,
AssignedUser sysname
)
INSERT INTO Orders
(Date, Item, Price, AssignedUser)
VALUES
('2015-08-01', 'wheel', 101.94, 'AAD_User01@YourDomain.com'),
('2015-08-08', 'seat', 50.45, 'AAD_User01@YourDomain.com'),
('2015-08-15', 'pedal', 26.73, 'AAD_User02@YourDomain.com')
go
-- Enable RLS
CREATE SCHEMA Security
go
CREATE FUNCTION Security.orderAccessPredicate(@AssignedUser sysname)
RETURNS TABLE
WITH SCHEMABINDING
AS
-- Regular users see rows assigned to them
-- Members of 'Admins' can see all rows
RETURN SELECT 1 AS accessResult
WHERE SUSER_SNAME() = @AssignedUser OR IS_MEMBER('Admins') = 1
go
CREATE SECURITY POLICY Security.orderSecurityPolicy
ADD FILTER PREDICATE Security.orderAccessPredicate(AssignedUser) ON dbo.Orders
go
-- Try connecting as various users
-- Members of Admins will see all rows
-- Other users will see only rows assigned to them
SELECT * FROM Orders
go
Azure AD 提供了身份验证和授权平台。 Azure SQL 数据库提供行级安全性。使用 Azure API 服务支持将两个平台结合起来,实现高级安全模型作为 MS CRM 2015 中的分层模型。这在现实中可能吗?有现成的实现吗?
不确定这是否直接回答了您的问题,但您当然可以在 Azure SQL 数据库上将 Azure AD 身份验证与行级安全性 (RLS) 结合使用,以启用不同的 Azure AD 身份以查看不同的子集数据,取决于他们是谁以及他们拥有什么组成员资格。组成员身份对于启用分层访问控制特别有用。
在 Azure SQL 中设置 Azure AD 身份验证的演练可在此处获得数据库:https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/
一旦你在 Azure users/groups 中拥有基于 Azure AD 身份的 SQL 数据库,你就可以创建一个 RLS 安全策略,根据执行查询的用户的身份过滤行.
这是一个简单的 T-SQL 示例:假设您的 Azure AD 有很多用户,其中一些是 'Admin' 组的成员。在 Azure SQL 数据库中,我们有一个 table 'Orders' 和一个 'AssignedUser' 列,指示每一行属于哪个用户。用户应该只能看到分配给他们的行,除非他们是 'Admin' 组的成员,在这种情况下他们应该看到所有行。
-- Set up dummy table
CREATE TABLE ORDERS Orders (
Date date,
Item nvarchar(64),
Price float,
AssignedUser sysname
)
INSERT INTO Orders
(Date, Item, Price, AssignedUser)
VALUES
('2015-08-01', 'wheel', 101.94, 'AAD_User01@YourDomain.com'),
('2015-08-08', 'seat', 50.45, 'AAD_User01@YourDomain.com'),
('2015-08-15', 'pedal', 26.73, 'AAD_User02@YourDomain.com')
go
-- Enable RLS
CREATE SCHEMA Security
go
CREATE FUNCTION Security.orderAccessPredicate(@AssignedUser sysname)
RETURNS TABLE
WITH SCHEMABINDING
AS
-- Regular users see rows assigned to them
-- Members of 'Admins' can see all rows
RETURN SELECT 1 AS accessResult
WHERE SUSER_SNAME() = @AssignedUser OR IS_MEMBER('Admins') = 1
go
CREATE SECURITY POLICY Security.orderSecurityPolicy
ADD FILTER PREDICATE Security.orderAccessPredicate(AssignedUser) ON dbo.Orders
go
-- Try connecting as various users
-- Members of Admins will see all rows
-- Other users will see only rows assigned to them
SELECT * FROM Orders
go