Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta seção descreve como partes do código do usuário podem se chamar no SQL Server, em Transact-SQL ou em um dos idiomas gerenciados. Essas relações entre objetos são conhecidas como links.
Links de invocação
Os links de invocação correspondem a uma invocação de código, seja de um usuário chamando um objeto (como um lote Transact-SQL chamando um procedimento armazenado) ou um procedimento ou função armazenado clr (common language runtime). Os links de invocação fazem com que uma EXECUTE permissão no destinatário da chamada seja verificada.
Links do Table-Access
Os links de acesso à tabela correspondem à recuperação ou modificação de valores em uma tabela, exibição ou uma função com valor de tabela. Eles são semelhantes aos links de invocação, exceto que eles têm um controle de acesso mais refinado em termos de permissões SELECT, INSERT, UPDATE e DELETE.
Links fechados
Links fechados significam que, durante a execução, as permissões não são verificadas na relação de objeto depois de estabelecida. Quando há um vínculo fechado entre dois objetos (por exemplo, objeto x e objeto y), as permissões no objeto y e em outros objetos acessados do objeto y são verificadas somente no momento da criação do objeto x. Na hora de criação do objeto x, REFERENCE a permissão é verificada em y em relação ao proprietário de x. No momento da execução, (por exemplo, quando alguém chama o objeto x), não há permissões verificadas em relação a y ou outros objetos que ele referencia estaticamente. No momento da execução, uma permissão apropriada será verificada em relação ao objeto x em si.
Links fechados são sempre usados em conjunto com uma dependência de metadados entre dois objetos. Essa dependência de metadados é uma relação estabelecida em catálogos do SQL Server que impede que um objeto seja descartado, desde que outro objeto dependa dele.
Links fechados são úteis quando não é apropriado ou gerenciável conceder permissões a muitos objetos dependentes. Os links fechados são introduzidos entre objetos que definem Transact-SQL pontos de entrada em assemblies CLR (por exemplo, procedimentos CLR, gatilhos, funções, tipos e agregações) e os assemblies dos quais são definidos. A segurança fechada contra esses objetos implica que, para invocar um ponto de entrada Transact-SQL definido em um assembly CLR, o chamador só precisa de uma permissão apropriada nesse ponto de entrada Transact-SQL. O chamador não é necessário para ter permissões nesse assembly ou em quaisquer outros assemblies que ele referencia estaticamente. As permissões no assembly são verificadas no momento da criação do ponto de entrada Transact-SQL.
Segurança de Authorization-Based do SQL Server
Veja a seguir as regras básicas por trás das verificações de segurança do SQL Server para invocações de e entre objetos de banco de dados baseados em CLR; as três primeiras regras definem quais permissões são verificadas e em qual objeto; a quarta regra define em qual contexto de execução a permissão é verificada.
Todas as invocações exigem
EXECUTEpermissão, a menos que as invocações ocorram dentro do mesmo objeto; isso significa que as chamadas no mesmo assembly não exigem nenhuma verificação de permissão. A permissão é verificada no momento da execução.Links fechados exigem
REFERENCEpermissão no destinatário do chamador quando o objeto de chamada é criado. A permissão é verificada para o proprietário do objeto de chamada quando o objeto é criado.Os links de acesso à tabela exigem a permissão correspondente
SELECTINSERTUPDATE, ouDELETEa permissão em relação à tabela ou exibição que está sendo acessada.A permissão é verificada no contexto de execução atual. Procedimentos e funções podem ser criados com um contexto de execução diferente do chamador. Os assemblies são sempre criados com o contexto de execução do procedimento, função ou gatilho definido em relação a ele.