diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index 5a332af..e1434dc 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -29,17 +29,12 @@ jobs: - name: Generate PDF document uses: hspaans/latexmk-action@v1 - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + - uses: "marvinpinto/action-automatic-releases@latest" with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} - body: | - Changes in this Release - - First Change - - Second Change - draft: false - prerelease: false + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: true + title: "Development Build" + files: | + *.pdf + diff --git a/macro.tex b/macro.tex index 9a82285..aabebf1 100644 --- a/macro.tex +++ b/macro.tex @@ -43,6 +43,7 @@ \newcommand{\templateChartAnnotation}{\ensuremath{\myLambda,\myGamma}} \newcommand{\instanceChartAnnotation}{\ensuremath{\myLambda}} \renewcommand{\P}[1]{\ensuremath{P_{#1}}} +\newcommand{\p}[1]{\ensuremath{p_{#1}}} % \newcommand{\TF}{\ensuremath{T_{\fChartFunction}}} \newcommand{\user}{user\,} \newcommand{\User}{User\,} @@ -57,4 +58,9 @@ \newcommand{\pipeline}{Pipeline\xspace} \newcommand{\pipelineTemplate}{Pipeline Template\xspace} -\newcommand{\pipelineInstance}{Pipeline Instance\xspace} \ No newline at end of file +\newcommand{\pipelineInstance}{Pipeline Instance\xspace} + + +\newcommand{\policy}[5]{ + $\langle \text{#1},{#2},{#3},{#4},\ensuremath{#5} \rangle$ +} \ No newline at end of file diff --git a/main.tex b/main.tex index 7aa3dfe..f86723a 100644 --- a/main.tex +++ b/main.tex @@ -24,6 +24,7 @@ \usepackage{soul} \usepackage[inline]{enumitem} \usepackage{xcolor} +\usepackage{amssymb} \graphicspath{{Images/}} \definecolor{commentsColor}{rgb}{0.497495, 0.497587, 0.497464} \definecolor{keywordsColor}{rgb}{0.000000, 0.000000, 0.635294} diff --git a/pipeline_instance_example.tex b/pipeline_instance_example.tex index 6744af2..5b19aa2 100644 --- a/pipeline_instance_example.tex +++ b/pipeline_instance_example.tex @@ -1,4 +1,3 @@ - \begin{example}\label{ex:instance} As an example, let us consider the pipeline template \tChartFunction in \cref{sec:example}. @@ -8,52 +7,10 @@ Services $s_1$ and $s_2$ are annotated with a profile that satisfies the data protection requirements in \P{1}, respectively. The third service $s_3$ is annotated with a profile that does not satisfy the data protection requirements in \P{1}. The filtering algorithm then returns the set $S'=\{s_1,s_2\}$. - The comparison algorithm is fnally applied to $S'$ and returns a ranking of the services according to quality metrics, where $s_1$ is ranked first. $s_1$ is then selected and integrated in $\vii{1}\in \Vp$. + The comparison algorithm is finally applied to $S'$ and returns a ranking of the services according to quality metrics, where $s_1$ is ranked first. $s_1$ is then selected and integrated in $\vii{1}\in \Vp$. The comparison algorithm is finally applied to $S'$ and returns a ranking of the services according to quality metrics, where $s_1$ is ranked first. $s_1$ is then selected and integrated in $\vii{1}\in \Vp$. The same logic is applied to the \vi{2} and \vi{3}. -\end{example} - - -% \begin{figure}[H] -% \centering - -% \begin{tikzpicture} -% % Nodes -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node11) at (0,1.2) {Sx}; -% \node[draw, circle, minimum size=1cm] (node1) at (0,0) {S1}; -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node10) at (0,-1.2) {Sy}; - -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node22) at (2,1.2) {Sx}; -% \node[draw, circle, minimum size=1cm] (node2) at (2,0) {S2}; -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node21) at (2,-1.2) {Sy}; - -% \node[draw, circle, minimum size=1cm] (node3) at (4,0) {$\timesOperator$}; - -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node42) at (5,-1.5) {Sx}; -% \node[draw, circle, minimum size=1cm] (node4) at (6,-1.5) {S3}; -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node41) at (7,-1.5) {Sy}; - -% \node[draw, circle, minimum size=1cm] (node5) at (6,1.5) {S4}; -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node51) at (5,1.5) {Sx}; -% \node[draw, circle, minimum size=0.4cm, draw=gray, text opacity=0.5] (node52) at (7,1.5) {Sy}; -% % Connection -% \draw[->] (node1) -- (node2); -% \draw[->] (node2) -- (node3); -% \draw[->] (node3) -- (node4); -% \draw[->] (node3) -- (node5); -% \end{tikzpicture} -% \caption{Service composition instance} -% \label{fig:service_composition_instance} -% \end{figure} -% \[ \forall S \in \mathrm{S}_{C} \exists \iChartFunction(S) = \mathrm{S}_{1} \] - - -% \begin{figure} -% \centering -% \includegraphics[width=\columnwidth]{serviceDetail.pdf} -% \caption{Service Detail} -% \label{fig:service_detail}reinstall remote-ssh -% \end{figure} +\end{example} \ No newline at end of file diff --git a/pipeline_template_example.tex b/pipeline_template_example.tex index 010168c..c473fda 100644 --- a/pipeline_template_example.tex +++ b/pipeline_template_example.tex @@ -1,22 +1,58 @@ \subsection{Example}\label{sec:example} -As an example, let us consider a pipeline template $G^{\myLambda,\myGamma}$ as a sequence of three vertices modeling three key stages in our reference scenario: data preparation (\vi{1}), data enrichment (\vi{2}), and data storage (\vi{3}). Each stage is annotated with its policy set \P{i} and functional description \F{i}. Table~\ref{table:example} reports the policies and functional descriptions for each vertex, which are presented in the following. - -%\begin{enumerate*}[label=n\arabic*)] -% \item -The first vertex (\vi{1}) is responsible for data preparation. -It specifies an anonymization policy ($\myLambda(v_1)$) to protect sensitive information, such as personally identifiable information (PII) in the dataset. -The transformation function \TF{1} in $\myGamma(v_1)$ is an empty function \tf{a}, as no functional transformation is required for anonymization. -% \item - -The second vertex (\vi{2}) focuses on data enrichment, where additional information from the states of New York and New Hampshire is integrated into the dataset. -It requires a data enrichment policy ($\myLambda(v_2)$) to ensure that the added data are relevant and comply with privacy regulations. -The transformation function \TF{2} in $\myGamma(v_2$) is an additive function \tf{a}, which merges and integrates the external data with the existing dataset. - % \item - - The third vertex (\vi{3}) is responsible for aggregating data, including statistical measures like averages, medians, and some more statistics. - It follows an aggregation policy ($\myLambda(v_3)$) to define how the aggregation should be performed, and ensure compliance with privacy and security regulations. - The transformation function \TF{3} in $\myGamma(v_3)$ is a transformation function \tf{t}, which computes the required statistics and aggregates the data. -%\end{enumerate*} + + +As an example, let us consider the pipeline template \tChartFunction in \cref{sec:example}. + +In this example all the policies referenced are detailed in table \ref{tab:anonymization}. +We assume that the data owner is the Connecticut Prison (CTP) and that this facility has a partnership with two others, namely New York Prison and New Hampshire Prison. + +The first stage is responsible for data anonymization. The policy annotation \P{i}, associated with the first stage, +specifies three degree of anonymization : \emph{none}, \emph{partial}, and \emph{full}. +During service execution, the policy is assessed: +if the service profile match with the data owner, \P{1} is satisfied and the data is not anonymized; +if the service profile match with a partner of the owner, \P{2} is satisfied and the data is partially anonymized; +if the service profile doesn't match with a partner nor with the owner, \P{3} is satisfied and the data is fully anonymized. + +The second stage is responsible for data enrichment. The policy annotation $p$, associated with the second stage, + +The third stage, responsible for data analysis and statistics, adopts policies analogous to the first stage. The logic remains consistent: +if the service profile match with the data owner, \P{1} is satisfied and the data computation is made on non anonymized data; +if the service profile match with a partner of the owner, \P{2} is satisfied and the data computation is made on partially anonymized data; +if the service profile doesn't match with a partner nor with the owner, \P{3} is satisfied and the data computation is made on fully anonymized data. +The fourth stage is responsible for machine learning tasks: +policy \p{4} applies, thus we always aim to anonymize the dataset to avoid any personal identifiers entering into the machine learning algorithm/model. +The fifth stage is responsible for storing data. As stated in policy annotation \P{5}, if the service is located in the facility itself, the data will not be anonymized. +If the service is located in a partner region, the data will be partially anonymized. + +The sixth stage is responsible for data visualization. As stated in policy annotation \P{6}, if the user is member of the facility itself, the data will not be anonymized. +If the user is member of a partner facility, the data will be partially anonymized. +If the user is not member of the facility nor a partner, the data will be fully anonymized. + + + + + +\begin{table*}[ht!] + \centering + \bgroup + \def\arraystretch{1.5} + \begin{tabular}{c|c||l} + \textbf{Policy} & \textbf{Service} & \textbf{Anonymization} \\ \hline + + $\p{1}$ & \s{1} & \policy{$\langle service,owner=``CTP"\rangle$}{dataset}{READ}{ANY}{\varnothing} \\ + $\p{2}$ & \s{1} & \policy{$\langle service,owner=partner(``CTP") \rangle$}{dataset}{READ}{ANY}{light\_anonymization} \\ + $\p{3}$ & \s{1} & \policy{$\langle service,owner=``Connecticut Prison"$}{dataset}{READ}{ANY}{full\_anonymization} \\ + $\p{4}$ & \s{4} & \policy{ANY}{dataset}{READ}{ANY}{full\_anonymization} \\ + $\p{5}$ & \s{5} & \policy{$\langle service,region=``FACILITY"\rangle$}{dataset}{WRITE}{ANY}{none} \\ + $\p{6}$ & \s{5} & \policy{$\langle service,region=``{CT,NY,NH}"\rangle$}{dataset}{WRITE}{ANY}{light\_anonymization} \\ + $\p{7}$ & \s{6} & \policy{$\langle,user,role= ``Connecticut Prison Officer"$}{dataset} {READ}{ANY}{none} \\ + $\p{7}$ & \s{6} & \policy{$\langle,user,role= ``Partener Prison Officer"$}{dataset} {READ}{ANY}{light\_anonymization} \\ + $\p{8}$ & \s{6} & \policy{$\langle,user,role= ``Any"$}{dataset} {READ}{ANY}{full\_anonymization} \\ + \end{tabular} + \egroup + \caption{Anonymization policies} + \label{tab:anonymization} +\end{table*} \begin{figure}[ht!] \centering