blob: ca9ee44e6640a5237379aed5c58ac9859468bb6e [file] [log] [blame]
{"version":3,"sources":["/home/madhan/Apache/git/atlas/docs/target/src/documents/ClassificationPropagation.md","/home/madhan/Apache/git/atlas/docs/target/theme/components/shared/Img/index.js"],"names":["layoutProps","MDXContent","components","props","mdxType","parentName","src","isMDXComponent","Img","width","height","baseUrl","useConfig","style","boxShadow","WebkitBoxShadow","MozBoxShadow"],"mappings":"+bASMA,EAAc,GAIL,SAASC,EAAW,GAG/B,IAFFC,EAAU,EAAVA,WACGC,EAAK,iBAER,OAAO,cALS,UAKC,iBAAKH,EAAiBG,EAAK,CAAED,WAAYA,EAAYE,QAAQ,cAE5E,oBACE,GAAM,8BAA4B,8BAEpC,wBACE,oBAAIC,WAAW,MAAI,gVACnB,oBAAIA,WAAW,MAAI,8CAAgD,oBAAIA,WAAW,MAAI,OAAa,0IAAiI,oBAAIA,WAAW,MAAI,OAAa,MAEtQ,oBACE,GAAM,aAAW,aAEnB,gQACA,cAAC,IAAG,CAACC,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,mCAAiC,mCAEzC,oQACA,cAAC,IAAG,CAACE,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,mDAAiD,mDAEzD,6JACA,cAAC,IAAG,CAACE,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,mDAAiD,mDAEzD,6KACA,cAAC,IAAG,CAACE,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,gCAA8B,gCAEtC,qXAEA,cAAC,IAAG,CAACE,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,oBAAkB,oBAE1B,uBAAG,wBAAQC,WAAW,KAAG,WAAqB,wKAE9B,oBAAIA,WAAW,KAAG,aAAmB,yGACrD,cAAC,IAAG,CAACC,IAAG,iDAAoDF,QAAQ,QACpE,uBAAG,wBAAQC,WAAW,KAAG,WAAqB,8SAEmD,wBAAQA,WAAW,KAAG,OAAiB,6GACxI,cAAC,IAAG,CAACC,IAAG,+DAAkEF,QAAQ,QAClF,cAAC,IAAG,CAACE,IAAG,+DAAkEF,QAAQ,QAClF,uBAAG,wBAAQC,WAAW,KAAG,WAAqB,6PAEiC,wBAAQA,WAAW,KAAG,OAAiB,iKACtH,cAAC,IAAG,CAACC,IAAG,+DAAkEF,QAAQ,QAClF,cAAC,IAAG,CAACE,IAAG,+DAAkEF,QAAQ,QAClF,oBACE,GAAM,uBAAqB,uBAE7B,8JAEA,oBACE,GAAM,oCAAkC,oCAE1C,0YAEA,cAAC,IAAG,CAACE,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,kCAAgC,kCAExC,2kBAGA,oBACE,GAAM,iEAA+D,iEAEvE,8cAE6E,oBAAIC,WAAW,KAAG,kDAA8C,+HAE7I,cAAC,IAAG,CAACC,IAAG,iDAAoDF,QAAQ,QACpE,oBACE,GAAM,2BAAyB,2BAEjC,4LACA,oBACE,GAAM,YAAU,YAElB,8KAEH,gMAEDH,EAAWM,gBAAiB,G,sECzG5B,+EAuCeC,IAnBHL,IACX,MAAM,IAAEG,EAAG,MAAEG,EAAK,OAAEC,GAAWP,GACzB,QAAEQ,GAAYC,sBAMpB,OACC,2BACC,uBAC6BC,MART,CACtBC,UAAW,6FACIC,gBAAiB,4FACjBC,aAAc,6FAM1BV,IAAM,GAAEK,IAAUL,IAClBI,OAAS,IAAEA,GAAU,QACrBD,MAAQ,IAAEA,GAAS","file":"static/js/documents-classification-propagation.a883372b.js","sourcesContent":["\nimport React from 'react'\nimport { mdx } from '@mdx-js/react'\n\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport Img from 'theme/components/shared/Img'\n\n\nconst layoutProps = {\n \n};\nconst MDXLayout = \"wrapper\"\nexport default function MDXContent({\n components,\n ...props\n}) {\n return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n\n <h1 {...{\n \"id\": \"classification-propagation\"\n }}>{`Classification Propagation`}</h1>\n <ul>\n <li parentName=\"ul\">{`Classification propagation enables classifications associated to an entity to be automatically associated with other related entities of the entity. This is very useful in dealing with scenarios where a dataset derives it data from other datasets - like a table loaded with data in a file, a report generated from a table/view, etc.`}</li>\n <li parentName=\"ul\">{`For example, when a table is classified as `}<em parentName=\"li\">{`PII`}</em>{`, tables or views that derive data from this table (via CTAS or ‘create view’ operation) will be automatically classified as `}<em parentName=\"li\">{`PII`}</em>{`.`}</li>\n </ul>\n <h2 {...{\n \"id\": \"use-cases\"\n }}>{`Use Cases`}</h2>\n <p>{`Consider the following lineage where data from a 'hdfs_path' entity is loaded into a table, which is further made available through views. We will go through various scenarios to understand the classification propagation feature.`}</p>\n <Img src={`/images/twiki/classification-propagation-1.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"add-classification-to-an-entity\"\n }}>{`Add classification to an entity`}</h2>\n <p>{`When classification ‘PII’ is added to 'hdfs_path' entity, the classification is propagated to all impacted entities in the lineage path, including 'employees' table, views 'us_employees' and 'uk_employees' - as shown below.`}</p>\n <Img src={`/images/twiki/classification-propagation-2.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"update-classification-associated-with-an-entity\"\n }}>{`Update classification associated with an entity`}</h2>\n <p>{`Any updates to classifications associated with an entity will be seen in all entities the classification is propagated to as well.`}</p>\n <Img src={`/images/twiki/classification-propagation-3.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"remove-classification-associated-with-an-entity\"\n }}>{`Remove classification associated with an entity`}</h2>\n <p>{`When a classification is deleted from an entity, the classification will be removed from all entities the classification is propagated to as well.`}</p>\n <Img src={`/images/twiki/classification-propagation-4.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"add-lineage-between-entities\"\n }}>{`Add lineage between entities`}</h2>\n <p>{`When lineage is added between entities, for example to capture loading of data in a file to a table, the classifications associated with the source entity are propagated to all impacted entities as well.\nFor example, when a view is created from a table, classifications associated with the table are propagated to the newly created view as well.`}</p>\n <Img src={`/images/twiki/classification-propagation-5.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"delete-an-entity\"\n }}>{`Delete an entity`}</h2>\n <p><strong parentName=\"p\">{`Case 1:`}</strong>{`\nWhen an entity is deleted, classifications associated with this entity will be removed from all entities the classifications are propagated to.\nFor example. when `}<em parentName=\"p\">{`employees`}</em>{` table is deleted, classifications associated with this table are removed from 'employees_view' view.`}</p>\n <Img src={`/images/twiki/classification-propagation-6.png`} mdxType=\"Img\" />\n <p><strong parentName=\"p\">{`Case 2:`}</strong>{`\nWhen an entity is deleted in the middle of a lineage path, the propagation link is broken and previously propagated classifications will be removed from all derived entities of the deleted entity.\nFor example. when 'us_employees' table is deleted, classifications propagating through this table (`}<strong parentName=\"p\">{`PII`}</strong>{`) are removed from 'ca_employees' table, since the only path of propagation is broken by entity deletion.`}</p>\n <Img src={`/images/twiki/classification-propagation-entity-delete-1.png`} mdxType=\"Img\" />\n <Img src={`/images/twiki/classification-propagation-entity-delete-2.png`} mdxType=\"Img\" />\n <p><strong parentName=\"p\">{`Case 3:`}</strong>{`\nWhen an entity is deleted in the middle of a lineage path and if there exists alternate path for propagation, previously propagated classifications will be retained.\nFor example. when 'us_employees' table is deleted, classifications propagating (`}<strong parentName=\"p\">{`PII`}</strong>{`) through this table are retained in 'ca_employees' table, since there are two propagation paths available and only one of them is broken by entity deletion.`}</p>\n <Img src={`/images/twiki/classification-propagation-entity-delete-3.png`} mdxType=\"Img\" />\n <Img src={`/images/twiki/classification-propagation-entity-delete-4.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"control-propagation\"\n }}>{`Control Propagation`}</h2>\n <p>{`Apache Atlas provides few options to control whether/where a classification is propagated.\nThis section details available options.`}</p>\n <h2 {...{\n \"id\": \"propagate-flag-in-classification\"\n }}>{`Propagate flag in classification`}</h2>\n <p>{`Each association of classification to an entity has a boolean flag that controls whether the classification is propagated or not.\nWhen a classification is associated with an entity, this flag is set to ‘true’ i.e. the classification will be propagated to all impacted entities. This flag can be updated to desired value during initial association or later.`}</p>\n <Img src={`/images/twiki/classification-propagation-7.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"propagate-flag-in-lineage-edge\"\n }}>{`Propagate flag in lineage edge`}</h2>\n <p>{`Apache Atlas supports a flag at lineage edge to enable/disable propagation of classifications through the edge. By default, the propagation is enabled for lineage edges.\nWhen the flag is turned off, no classification will be propagated through this edge; and propagation of currently propagated classifications through the edge will be reevaluated, so that they can be removed from impacted entities.\nWhen the flag is turned on, propagation of classifications of the source entity will be reevaluated, so that they can be propagated to all impacted entities.`}</p>\n <h2 {...{\n \"id\": \"block-propagation-of-specific-classifications-in-lineage-edge\"\n }}>{`Block propagation of specific classifications in lineage edge`}</h2>\n <p>{`Apache Atlas supports blocking propagation of specific classifications in at lineage edges.\nThis can be useful, for example, to handle scenarios like: a column classified as PII is masked when creating a view; in such scenario, if corresponding column in the created view might not have PII, hence the propagation of PII classification should be blocked.\nThis can be done by updating the lineage edge to add the PII classification in `}<em parentName=\"p\">{`‘blocked propagated classifications’`}</em>{` list.\nClassifications in blocked propagated classifications will not be propagated in the derivative/downstream entities.`}</p>\n <Img src={`/images/twiki/classification-propagation-8.png`} mdxType=\"Img\" />\n <h2 {...{\n \"id\": \"notifications-and-audit\"\n }}>{`Notifications and Audit`}</h2>\n <p>{`When propagated classifications are added/update/deleted, Apache Atlas sends notifications to 'ATLAS_ENTITIES' topic for each entity affected by the propagation.`}</p>\n <h2 {...{\n \"id\": \"glossary\"\n }}>{`Glossary`}</h2>\n <p>{`When a classification is associated with a glossary term, the classification is automatically propagated to all entities associated with the term.`}</p>\n </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;","/**\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\nimport { useConfig } from \"../../../../docz-lib/docz/dist\";\nconst Img = props => {\n\tconst { src, width, height } = props;\n\tconst { baseUrl } = useConfig();\n const styles = {\n\tboxShadow: \"0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)\",\n WebkitBoxShadow: \"0 2px 2px 0 rgba(0,0,0,0.14) 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)\",\n MozBoxShadow: \"0 2px 2px 0 rgba(0,0,0,0.14) 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2)\"\n }\n\treturn (\n\t\t<div>\n\t\t\t<img\n style={styles}\n\t\t\t\tsrc={`${baseUrl}${src}`}\n\t\t\t\theight={`${height || \"auto\"}`}\n\t\t\t\twidth={`${width || \"100%\"}`}\n\t\t\t/>\n\t\t</div>\n\t);\n};\nexport default Img;\n"],"sourceRoot":""}