153 vault secrets

This commit is contained in:
2025-10-24 19:09:22 +03:00
parent abd4487226
commit 3f61e8919b
5 changed files with 133 additions and 945 deletions
+15 -59
View File
@@ -13,8 +13,9 @@
<cfcatch type="invalidParamValue">
<cfreturn representationOf(this.helper.formatBadRequestError(cfcatch)).withStatus(400)/>
</cfcatch>
</cftry>
</cftry>
<cfset var local={}/>
<cfquery name="local.qInstance" result="local.result">
select
@@ -188,56 +189,8 @@
А есть смысл делать это в одну строну? наверно, есть - чтобы не забираться в операцию
--->
<!--- видимо, достаточно нам параметров операции create... но можно и все параметры перебрать --->
<!--- <cfquery name="local.qCfsParamRef" result="local.result">
select
p.svc_operation_cfs_param
,p.label
,p.descr
,p.is_sensitive
,r.svc_id as ref_svc_id
,r.svc as ref_svc
,r.code as ref_code
from svc_operation_cfs_param p
join svc_operation o on (p.svc_operation_id=o.svc_operation_id)
join svc on (o.svc_id=svc.svc_id)
join svc r on (p.ref_svc_id=r.svc_id)
where svc.svc_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#qInstance.service_id#" null=#!isValid('integer',qInstance.service_id)#/>
AND o.operation='create'
</cfquery>
<cfset var dependencies=[]/>
<!--- <cfset var dependencies=#local.qCfsParamRef#/> --->
<cftry>
<cfset var local.instanceData=deserializeJson(local.qCurrentState.instance_data)/>
<cfloop query="local.qCfsParamRef">
<cfset var paramName = local.qCfsParamRef.svc_operation_cfs_param/>
<cfif structKeyExists(local.instanceData, "params") AND structKeyExists(local.instanceData.params, paramName)>
<cfset var refKey = structFind(local.instanceData.params, paramName)/>
<cfif isValid("guid",refKey)>
<!--- *** нужно укрепить изоляцию и проконтролировать принадлежность инстанса данному тенанту --->
<cfquery name="qDependency">
select e.display_name, e.is_auxiliary
from instance e
where e.instance_uid = <cfqueryparam cfsqltype="cf_sql_other" value="#refKey#" null=#!isValid('guid',refKey)#/>
</cfquery>
<cfset var rec = {
"param":"#svc_operation_cfs_param#",
"descr":"#descr#",
"svcId":#ref_svc_id#,
"svc":"#ref_svc#",
"code":"#ref_code#",
"label":"#label#",
"uid":"#refKey#",
"displayName":"#qDependency.display_name#",
"isAuxiliary": #request.castToBool(qDependency.is_auxiliary)#
}/>
<cfset arrayAppend(dependencies, rec)/>
</cfif>
</cfif>
</cfloop>
<cfcatch type="ANY"></cfcatch>
</cftry> --->
<!--- *** здесь уместна параноидальная проверка прав --->
<cfquery name="local.qDependency">
@@ -329,7 +282,7 @@
</cfquery>
<cftry>
<cfset var local.instanceData=deserializeJson(local.qCurrentState.instance_data)/>
<cfset local.instanceData=deserializeJson(local.qCurrentState.instance_data)/>
<cfloop query="local.qCfsParam">
<cfset var paramName = local.qCfsParam.svc_operation_cfs_param/>
<cfif structKeyExists(local.instanceData, "params") AND structKeyExists(local.instanceData.params, paramName)>
@@ -348,7 +301,10 @@
<cfset var out=structNew("linked")/>
<cfset var local.vaultData=structNew("linked")/>
<cfset "local.vaultData"=structNew("linked")/>
<cfif structKeyExists(instanceData,"vault") AND structKeyExists(instanceData.vault,"fields")>
<cfset "local.vaultFields" = #instanceData.vault.fields#/>
</cfif>
<cftry><!--- *** надо бы такие вещи делать асинхронно --->
<cfset vaultUrl=""/>
@@ -359,10 +315,8 @@
<cfset vaultUrl=instanceData.vault.Url/><!--- v002 --->
</cfif>
<!--- url="https://vault.adl.nubes.ru:8200/v1/auth/approle/login" --->
<cfhttp method="post"
url="https://vault.lk.adl.nubes.ru/v1/auth/approle/login"
url="#request.vault_login_url#"
timeout="3"
charset="utf-8"
result="res"
@@ -387,9 +341,11 @@
</cfhttp>
<!--- *** костыль для перехода от формата v001 к v002 --->
<cfif structKeyExists(instanceData,"vault") AND structKeyExists(instanceData.vault,"fields")>
<cfset local.tempVaultData = #deserializeJson(cred.filecontent).data.data#/>
<cfset "local.tempVaultData" = #deserializeJson(cred.filecontent).data.data#/>
<cfset "local.vaultData" = #structNew("linked")#/>
<!--- <cfset "out.vaultData" = #local.tempVaultData#/> --->
<cfloop collection=#instanceData.vault.fields# index="i">
<cfset var fld=instanceData.vault.fields[i]/>
@@ -445,7 +401,7 @@
<cfset "out.instance.vaultData"=local.vaultData/>
<cfset "out.instance.state" = (local.qCurrentState.recordCount GT 0) ? this.helper.appendRecord(structNew("linked"), "", local.currentStateTitleMap, local.qCurrentState, this.helper.snake2camel) : {}/>
<!--- <cfset "out.instance.operation"=this.helper.appendRecord(structNew("linked"), "", local.operationTitleMap, local.qOperation, this.helper.snake2camel)/> --->
<cfset "out.instance.operations"=[]/>
<cfloop query=#local.qOperation#>
<cfset arrayAppend(out.instance.operations, this.helper.appendRecord(structNew("linked"), "", local.operationTitleMap, local.qOperation, this.helper.snake2camel))/>