Apache Airflow-Google身份验证仅创建超级用户

时间:2018-08-10 07:18:09

标签: google-oauth airflow

我正在气流中实现Google身份验证(版本1.9.0)。在google_auth.py中,气流将每个用户都创建为超级用户

if (!NotificationUtils.isAppIsInBackground(getApplicationContext())){
            Intent intent = new Intent(Config.PUSH_NOTIFICATION);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
            intent.putExtra("Plan","fromFCM");
            broadcastManager.sendBroadcast(intent);
            Bitmap bitmapIcon = BitmapFactory.decodeResource(getResources(), R.drawable.notify_app_icon);
            PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
            NotificationCompat.Builder notificationBulder = new NotificationCompat.Builder(this);
            notificationBulder.setContentTitle(notificationData.getTitle());
            notificationBulder.setContentText(notificationData.getTextMessage());
            notificationBulder.setSmallIcon(R.drawable.notify_app_icon);
            notificationBulder.setLargeIcon(bitmapIcon);
            notificationBulder.setStyle(new NotificationCompat.BigTextStyle().bigText(notificationData.getTextMessage()));
            notificationBulder.setAutoCancel(true);
            //notificationBulder.setSmallIcon(R.mipmap.ic_launcher);
            notificationBulder.setContentIntent(pendingIntent);
            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            if (notificationManager != null) {
                notificationManager.notify(notificationData.getId(), notificationBulder.build());
           /* Plan_Details plan_details = new Plan_Details();
            plan_details.refreshPlan();*/

            }

我只想将超级用户权限仅授予某些团队成员。因此,我在def is_superuser(self): '''Access all the things''' return True 类中编辑了函数is_superuser(),如下所示:

GoogleUser

是否有更好的方法可以做到这一点,或者气流可以立即提供此功能?我无法找到有关使用Google OAuth创建具有有限权限的用户的任何信息。

1 个答案:

答案 0 :(得分:0)

在使用RBAC的较新版本之前,气流基本上只是在没有任何授权层的情况下处理身份验证。超级用户标志就是它。

我可以通过airflow.cfg对其进行配置,而不是对其进行硬编码。这样,您不必每次都要更新列表时都修改代码,只需更新配置并重新启动即可。

因此,在您的airflow.cfg中,说出“。[core]”块,添加super_users = member1@xyz.com,member2@xyz.com

然后执行您的功能

def is_superuser(self):
    return self.user.email in configuration.get("core", "super_users").split(",")