One way that we can do this is by signing the procedure (you can also use this with functions and triggers) with a certificate or an asymmetric key.
In this post I’m only going to look into signing a stored procedure with a certificate but the same ideas can be applied for the other objects and with an asymmetric key.
We’re going to create a certificate and sign our stored proc using that certificate. We’ll then create a user based on the certificate and grant the new certificate user the appropriate permissions to run the stored procedure.
Every SQL Server DBA should know how to do this, but in my experience, it’s a small percentage who do.