airflow.providers.fab.auth_manager.security_manager.override

模組內容

類別

FabAirflowSecurityManagerOverride

此安全性管理器會覆寫預設的 AirflowSecurityManager 安全性管理器。

屬性

日誌

MAX_NUM_DATABASE_USER_SESSIONS

airflow.providers.fab.auth_manager.security_manager.override.log[source]
airflow.providers.fab.auth_manager.security_manager.override.MAX_NUM_DATABASE_USER_SESSIONS = 50000[source]
class airflow.providers.fab.auth_manager.security_manager.override.FabAirflowSecurityManagerOverride(appbuilder)[source]

基底類別: airflow.www.security_manager.AirflowSecurityManagerV2

此安全性管理器會覆寫預設的 AirflowSecurityManager 安全性管理器。

此安全性管理器僅在使用授權管理器 FabAuthManager 時使用。它定義了 FabAuthManager 運作所需之安全性管理器的所有內容。任何特定於 AirflowSecurityManager 的操作都應在此處定義,而不是在 AirflowSecurityManager 中定義。

參數

appbuilder – Appbuilder。

property get_session[source]
property auth_type[source]

取得授權類型。

property is_auth_limited: bool[source]

授權速率是否受限制。

property auth_rate_limit: str[source]

取得授權速率限制。

property auth_role_public[source]

取得公開角色。

property oauth_providers[source]

Oauth 供應商。

property auth_ldap_tls_cacertdir[source]

LDAP TLS CA 憑證目錄。

property auth_ldap_tls_cacertfile[source]

LDAP TLS CA 憑證檔案。

property auth_ldap_tls_certfile[source]

LDAP TLS 憑證檔案。

property auth_ldap_tls_keyfile[source]

LDAP TLS 金鑰檔案。

property auth_ldap_allow_self_signed[source]

LDAP 允許自我簽署。

property auth_ldap_tls_demand[source]

LDAP TLS 需求。

property auth_ldap_server[source]

取得 LDAP 伺服器物件。

property auth_ldap_use_tls[source]

LDAP 是否應使用 TLS。

property auth_ldap_bind_user[source]

LDAP 繫結使用者。

property auth_ldap_bind_password[source]

LDAP 繫結密碼。

LDAP 搜尋物件。

property auth_ldap_search_filter[source]

LDAP 搜尋篩選器。

property auth_ldap_uid_field[source]

LDAP UID 欄位。

property auth_ldap_firstname_field[source]

LDAP 名字欄位。

property auth_ldap_lastname_field[source]

LDAP 姓氏欄位。

property auth_ldap_email_field[source]

LDAP 電子郵件欄位。

property auth_ldap_append_domain[source]

LDAP 附加網域。

property auth_ldap_username_format[source]

LDAP 使用者名稱格式。

property auth_ldap_group_field: str[source]

LDAP 群組欄位。

property auth_roles_mapping: dict[str, list[str]][source]

授權角色的對應。

property auth_user_registration_role_jmespath: str[source]

用於使用者註冊的 JMESPATH 角色。

property auth_remote_user_env_var: str[source]
property api_login_allow_multiple_providers[source]
property auth_username_ci[source]

取得 CI 的授權使用者名稱。

property auth_ldap_bind_first[source]

LDAP 優先繫結。

property openid_providers[source]

Openid 供應商。

property auth_type_provider_name[source]
property auth_user_registration[source]

是否允許使用者自行註冊。

property auth_user_registration_role[source]

預設使用者自行註冊角色。

property auth_roles_sync_at_login: bool[source]

是否應在登入時同步角色。

property auth_role_admin[source]

取得管理員角色。

property oauth_whitelists[source]
property builtin_roles[source]

取得內建角色。

auth_view[source]

用於驗證檢視的 obj 執行個體

registeruser_view[source]

用於註冊使用者檢視的 obj 執行個體

user_view[source]

用於使用者檢視的 obj 執行個體

user_model[source]
role_model[source]
action_model[source]
resource_model[source]
permission_model[source]

檢視

authdbview[source]

如果您想要自己的驗證資料庫檢視,請覆寫

authldapview[source]

如果您想要自己的 LDAP 驗證檢視,請覆寫

authoidview[source]

如果您想要自己的 OID 驗證檢視,請覆寫

authoauthview[source]

如果您想要自己的 OAuth 驗證檢視,請覆寫

authremoteuserview[source]

如果您想要自己的 REMOTE_USER 驗證檢視,請覆寫

registeruserdbview[source]

如果您想要自己的註冊使用者資料庫檢視,請覆寫

registeruseroidview[source]

如果您想要自己的註冊使用者 OpenID 檢視,請覆寫

registeruseroauthview[source]

如果您想要自己的註冊使用者 OAuth 檢視,請覆寫

actionmodelview[source]
permissionmodelview[source]
rolemodelview[source]
registeruser_model[source]
registerusermodelview[source]
resourcemodelview[source]
userdbmodelview[source]
resetmypasswordview[source]
resetpasswordview[source]
userinfoeditview[source]
userldapmodelview[source]
useroauthmodelview[source]
userremoteusermodelview[source]
useroidmodelview[source]
userstatschartview[source]
jwt_manager[source]

Flask-JWT-Extended

oid[原始碼]

Flask-OpenID OpenID

oauth[原始碼]
oauth_remotes: dict[str, Any][原始碼]

已初始化的 (remote_app) 提供者字典 {‘provider_name’, OBJ }

oauth_user_info[原始碼]
oauth_allow_list: dict[str, list][原始碼]

OAuth 電子郵件允許清單

DAG_RESOURCES[原始碼]
VIEWER_PERMISSIONS = [(), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()][原始碼]
USER_PERMISSIONS = [(), (), (), (), (), (), (), (), ()][原始碼]
OP_PERMISSIONS = [(), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()][原始碼]
ADMIN_PERMISSIONS = [(), (), (), (), (), (), (), (), (), ()][原始碼]
ROLE_CONFIGS: list[dict[str, Any]][原始碼]
RESOURCE_DETAILS_MAP[原始碼]
DAG_ACTIONS[原始碼]
register_views()[原始碼]

註冊 FAB 授權管理器相關的視圖。

create_login_manager()[原始碼]

建立登入管理器。

create_jwt_manager()[原始碼]

建立 JWT 管理器。

reset_password(userid, password)[原始碼]

變更/重設使用者驗證資料庫的密碼。

密碼將被雜湊並儲存。

參數
  • userid (int) – 要重設密碼的使用者 ID

  • password (str) – 要重設的明文密碼,並雜湊後儲存在資料庫中

reset_user_sessions(user)[原始碼]
load_user_jwt(_jwt_header, jwt_data)[原始碼]
create_builtin_roles()[原始碼]

傳回 FAB 內建角色。

create_admin_standalone()[原始碼]

建立具有隨機密碼的管理員使用者,以便使用者可以存取 Airflow。

create_db()[原始碼]

建立資料庫。

如果管理員和公用角色不存在,則建立它們。

get_readable_dags(user)[原始碼]

取得已驗證使用者可讀取的 DAG。

get_editable_dags(user)[原始碼]

取得已驗證使用者可編輯的 DAG。

get_accessible_dags(user_actions, user, session=NEW_SESSION)[原始碼]
get_accessible_dag_ids(user, user_actions=None, session=NEW_SESSION)[原始碼]
static get_readable_dag_ids(user=None)[原始碼]

取得已驗證使用者可讀取的 DAG ID。

static get_editable_dag_ids(user=None)[原始碼]

取得已驗證使用者可編輯的 DAG ID。

can_access_some_dags(action, dag_id=None)[原始碼]

檢查使用者是否具有某些 DAG 的讀取或寫入權限。

get_all_permissions()[原始碼]

以 (動作, 資源名稱) 元組的集合形式傳回所有權限。

create_dag_specific_permissions()[原始碼]

為所有 DAG 新增權限。

為所有 DAG 建立 ‘can_read’、‘can_edit’ 和 ‘can_delete’ 權限,以及其中提供的任何 access_control 權限。

這會迭代所有 DAG,這可能會很慢。如果您只需要同步單個 DAG,請參閱 sync_perm_for_dag

prefixed_dag_id(dag_id)[原始碼]

傳回 DAG ID 的權限名稱。

is_dag_resource(resource_name)[原始碼]

判斷資源是屬於 DAG 還是所有 DAG。

sync_perm_for_dag(dag_id, access_control=None)[原始碼]

同步給定 DAG ID 的權限。

DAG ID 肯定存在於我們的 DAG 包中,因為只有「重新整理」按鈕或 DagBag 才會呼叫此函數。

參數
  • dag_id (str) – 應該更新其權限的 DAG 的 ID

  • access_control (Mapping[str, Mapping[str, Collection[str]] | Collection[str]] | None) – 一個字典,其中每個鍵是角色名稱,每個值可以是: - DAG 資源動作名稱的 set() (例如 {‘can_read’}) - 或一個字典,其中每個鍵是資源名稱(‘DAGs’ 或 ‘DAG Runs’),每個值是動作名稱的 set() (例如,{‘DAG Runs’: {‘can_create’}, ‘DAGs’: {‘can_read’}})

傳回

傳回類型

None

add_permissions_view(base_action_names, resource_name)[原始碼]

將資源上的動作新增至後端。

參數
  • base_action_names

    來自視圖的權限列表 (所有公開的方法)

    ’can_add’、’can_edit’ 等…

  • resource_name – 要新增的資源名稱

add_permissions_menu(resource_name)[原始碼]

在 permission_resource 上將 menu_access 新增至資源。

參數

resource_name – 資源名稱

security_cleanup(baseviews, menus)[原始碼]

清除資料庫中所有未使用的權限。

參數
  • baseviews – BaseViews 類別的列表

  • menus – Menu 類別

sync_roles()[原始碼]

初始化預設和自訂角色以及相關權限。

  1. 使用相關權限初始化預設角色 (管理員、檢視者、使用者、運營者、公用)。

  2. 使用相關權限初始化自訂角色 (dag-user)。

create_perm_vm_for_all_dag()[原始碼]

如果 perm-vm 不存在,則建立它,並將其插入所有 DAG 的 FAB 安全模型中。

add_homepage_access_to_custom_roles()[原始碼]

將 Website.can_read 權限新增至所有自訂角色。

update_admin_permission()[原始碼]

為管理員將遺失的權限新增到表格中。

管理員應取得所有權限,除了 DAG 權限,因為管理員已具有 Dags 權限。將遺失的權限新增到管理員的表格中。

clean_perms()[原始碼]

FAB 會留下需要清除的錯誤權限。

permission_exists_in_one_or_more_roles(resource_name, action_name, role_ids)[原始碼]

有效率地檢查特定權限是否存在於角色 ID 列表中;由 has_access 使用。

參數
  • resource_name (str) – 視圖的名稱,用於檢查是否存在於其中一個角色中

  • action_name (str) – 要檢查是否存在的權限名稱

  • role_ids (list[int]) – 角色 ID 的列表

傳回

布林值

傳回類型

bool

perms_include_action(perms, action_name)[原始碼]
init_role(role_name, perms)[原始碼]

使用動作和相關資源初始化角色。

參數
  • role_name

  • perms

bulk_sync_roles(roles)[原始碼]

同步提供的角色和權限。

sync_resource_permissions(perms=None)[原始碼]

填充基於資源的權限。

update_role(role_id, name)[source]

更新資料庫中的角色。

add_role(name)[source]

在資料庫中新增角色。

find_role(name)[source]

在資料庫中尋找角色。

參數

name – 角色名稱

get_all_roles()[source]
delete_role(role_name)[source]

刪除指定的角色。

參數

role_name (str) – ab_role 表格中角色的名稱

get_roles_from_keys(role_keys)[source]

從金鑰列表建構 FAB 角色物件的列表。

注意: - 金鑰類似於:「LDAP 群組 DN」或「OAUTH 群組名稱」 - 我們使用 AUTH_ROLES_MAPPING 從金鑰對應到 FAB 角色名稱

參數

role_keys (list[str]) – FAB 角色金鑰的列表

get_public_role()[source]
add_user(username, first_name, last_name, email, role, password='', hashed_password='')[source]

建立使用者。

load_user(user_id)[source]
get_user_by_id(pk)[source]
count_users()[source]

回傳資料庫中使用者數量。

add_register_user(username, first_name, last_name, email, password='', hashed_password='')[source]

為使用者新增註冊請求。

:rtype : RegisterUser

find_user(username=None, email=None)[source]

透過使用者名稱或電子郵件尋找使用者。

find_register_user(registration_hash)[source]
update_user(user)[source]
del_register_user(register_user)[source]

從資料庫中刪除註冊物件。

參數

register_user – 要刪除的 RegisterUser 物件

get_all_users()[source]
update_user_auth_stat(user, success=True)[source]

更新使用者驗證統計資訊。

這會在成功/不成功的驗證嘗試時執行。

參數
  • user – 已識別(但可能未成功驗證)的使用者模型

  • success – 預設為 true,若為 true 則增加 login_count、更新 last_login 並將 fail_login_count 重設為 0;若為 false 則在使用者模型上增加 fail_login_count。

get_action(name)[source]

取得現有的動作記錄。

參數

name (str) – 名稱

create_action(name)[source]

將動作新增至後端,模型動作。

參數

name – 動作的名稱:‘can_add’、‘can_edit’ 等…

delete_action(name)[source]

刪除權限動作。

參數

name (str) – 要刪除的動作名稱 (例如 can_read)。

get_resource(name)[source]

如果資源記錄存在,則依名稱回傳資源記錄。

參數

name (str) – 資源名稱

create_resource(name)[source]

使用給定的名稱建立資源。

參數

name – 要建立的資源名稱。

get_all_resources()[source]

取得所有現有的資源記錄。

delete_resource(name)[source]

從後端刪除資源。

參數

name (str) – 資源名稱

get_permission(action_name, resource_name)[source]

如果權限已存在,則取得使用給定的動作 -> 資源配對建立的權限。

參數
  • action_name (str) – 動作名稱

  • resource_name (str) – 資源名稱

get_resource_permissions(resource)[source]

檢索與特定資源物件相關聯的權限配對。

參數

resource (airflow.providers.fab.auth_manager.models.Resource) – 代表單一資源的物件。

create_permission(action_name, resource_name)[source]

將資源的權限新增至後端。

參數
  • action_name – 要新增的動作名稱:‘can_add’、‘can_edit’ 等…

  • resource_name – 要新增的資源名稱

delete_permission(action_name, resource_name)[source]

刪除連結動作 -> 資源配對的權限。

不會刪除底層的動作或資源。

參數
  • action_name (str) – 現有動作的名稱

  • resource_name (str) – 現有資源的名稱

add_permission_to_role(role, permission)[source]

將現有的權限配對新增至角色。

參數
remove_permission_from_role(role, permission)[source]

從角色中移除權限配對。

參數
get_oid_identity_url(provider_name)[source]

回傳 OIDC 身分提供者 URL。

static get_user_roles(user=None)[source]

取得與使用者相關聯的所有角色。

參數

user – FAB 模型中的 ab_user。

傳回

與使用者相關聯的角色列表。

auth_user_ldap(username, password)[source]

使用 LDAP 驗證使用者身分。

注意:這取決於 python-ldap 模組。

參數
  • username – 使用者名稱

  • password – 密碼

auth_user_db(username, password)[source]

驗證使用者身分,使用資料庫驗證方式。

參數
  • username – 使用者名稱或已註冊的電子郵件地址

  • password – 密碼,將針對資料庫中的雜湊密碼進行測試

oauth_user_info_getter(func)[source]

取得所有提供者的 OAuth 使用者資訊。

接收提供者和回應,並回傳一個字典,其中包含從提供者回傳的資訊。回傳的使用者資訊字典的鍵應與使用者模型同名。

像這樣使用它,以下為 GitHub 的範例

@appbuilder.sm.oauth_user_info_getter
def my_oauth_user_info(sm, provider, response=None):
    if provider == "github":
        me = sm.oauth_remotes[provider].get("user")
        return {"username": me.data.get("login")}
    return {}
get_oauth_user_info(provider, resp)[source]

有不同的 OAuth API,它們使用不同的方式來檢索使用者資訊。

所有提供者都有不同的方式來檢索使用者資訊。

static oauth_token_getter()[source]

取得驗證 (OAuth) 權杖。

check_authorization(perms=None, dag_id=None)[source]

檢查已登入的使用者是否具有指定的權限。

set_oauth_session(provider, oauth_response)[source]

使用 OAuth 使用者密碼設定當前的工作階段。

get_oauth_token_key_name(provider)[source]

回傳 oauth 提供者的 token_key 名稱。

如果未設定,則預設為 oauth_token,這可以使用 OAUTH_PROVIDERS 和 token_key 鍵進行設定。

get_oauth_token_secret_name(provider)[source]

取得 oauth 提供者的 token_secret 名稱。

如果未設定,則預設為 oauth_secret。這可以使用 OAUTH_PROVIDERStoken_secret 進行設定。

auth_user_oauth(userinfo)[source]

使用 OAuth 驗證使用者身分。

Userinfo

包含使用者資訊的字典 (鍵與使用者模型欄位相同)

auth_user_oid(email)[source]

OpenID 使用者驗證。

參數

email – 使用者的電子郵件地址,用於驗證

auth_user_remote_user(username)[source]

REMOTE_USER 使用者驗證。

參數

username – 使用者的使用者名稱,用於遠端驗證

get_user_menu_access(menu_names=None)[source]
static ldap_extract_list(ldap_dict, field_name)[source]
static ldap_extract(ldap_dict, field_name, fallback)[source]
filter_roles_by_perm_with_action(action_name, role_ids)[source]

尋找具有權限的角色。

此條目是否有幫助?