Solución:
No, no necesita otorgar permiso explícito en Table1 y Table2, ese es uno de los objetivos de incrustar código en el procedimiento almacenado y ahí es donde entra en vigencia la función de encapsulación.
Por favor, consulte el siguiente enlace de Microsoft:
Administrar permisos con procedimientos almacenados en SQL Server
Ejecución de procedimiento almacenado
Los procedimientos almacenados aprovechan el encadenamiento de propiedad para proporcionar acceso a los datos, de modo que los usuarios no necesitan tener un permiso explícito para acceder a los objetos de la base de datos. Existe una cadena de propiedad cuando los objetos que acceden entre sí de forma secuencial pertenecen al mismo usuario. Por ejemplo, un procedimiento almacenado puede llamar a otros procedimientos almacenados o un procedimiento almacenado puede acceder a varias tablas. Si todos los objetos en la cadena de ejecución tienen el mismo propietario, SQL Server solo verifica el permiso EJECUTAR para la persona que llama, no los permisos de la persona que llama sobre otros objetos. Por lo tanto, solo debe otorgar permisos EJECUTAR en procedimientos almacenados; puede revocar o denegar todos los permisos en las tablas subyacentes.
Utilice el siguiente código para otorgar permiso de ejecución:
USE database_name
GO
GRANT EXECUTE ON USP_NAME
TO User_name;
GO
La esperanza de arriba ayuda.