代码之家  ›  专栏  ›  技术社区  ›  J Weezy

ssis:无法在dontsavesensitive模式下使用getsensitivevalue()访问脚本任务中的敏感参数

  •  2
  • J Weezy  · 技术社区  · 6 年前

    运行SQL Server 2014。我正在遵循以下Web链接上的说明:

    https://www.hansmichiels.com/2016/11/19/using-sensitive-parameters-ssis-series/

    基本上,我认为在这个网站上发布的内容是不正确的。作者认为,可以将包设置为“dontsavessensite”,同时可以访问设置为sensitive的参数。每当我尝试这样做时,在getsensitivevalue()函数中都会得到一个空值,而包只是连续运行。只是为了grins,我将包部署到服务器并设置敏感的环境变量,但是包继续持续运行。

    当包设置为“EncryptSensitiveWithUserKey”时,它将成功运行。

    TL,博士

    在将包设置为“dontsavesensitive”或必须使用“encryptsensitivewithuserkey”的C脚本任务中,是否可以访问参数值?

    更新:下面的三个变量都被选择为只读,但在调试期间返回空白。注:参数值用数据填充。

        public void Main()
        {
            // Variable declaration(s).
            string strSftpUserName = (string)Dts.Variables["$Package::SftpUserName"].GetSensitiveValue();
            string strSftpPassword = (string)Dts.Variables["$Package::SftpPassword"].GetSensitiveValue();
            string strSshHostKeyFingerprint = (string)Dts.Variables["$Package::SftpSshHostKeyFingerprint"].GetSensitiveValue();
    
            // Setup session options.
            SessionOptions sessionOptions = new SessionOptions
            {
                // Set session options here.
            };
    
            try
            {
                using (Session session = new Session())
                {                   
                    // Do something here.
                }
    
                Dts.TaskResult = (int)ScriptResults.Success;
            }
            catch (Exception ex)
            {                
                // Print results to SSIS log.
                Dts.Events.FireError(0, strTaskName, ex.Message, null, 0);
    
                // Something went wrong, report a failure.
                Dts.TaskResult = (int)ScriptResults.Failure;
            }
        }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   J Weezy    6 年前

    我想出来了。简而言之,参数必须设置为sensitive,参数值必须使用getsensitivevalue()检索,包和项目都必须通过protectionlevel加密。我选择用用户密钥加密。接下来是创建敏感的环境变量,然后将其映射到包参数。最后一点(我缺少wsa),包必须在用于运行包的代理帐户下编译。

    https://docs.microsoft.com/en-us/sql/integration-services/security/access-control-for-sensitive-data-in-packages?view=sql-server-2017